Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Contar valores (https://www.clubdelphi.com/foros/showthread.php?t=94267)

rruffino 28-10-2019 16:02:52

Contar valores
 
Hola, buen día... tengo dos tablas A y B, con cardinalidad de 1-->N desde A hacia B... en B aparecen varios registros particulares por cada registro de A. Lo que necesito saber es cuantos registros de A tienen al menos un registro de B que cumpla cierta condicion.
Por ejemplo... en A que es la venta tengo el numero de comprobante y en B tengo los items que vendi que pueden repetirse. Lo que necesito es que cuando el item se repite en B me lo cuente una sola vez en A.
Ya he probado con el group by pero siempre me saca la cantidad total.
Aqui el código:
Código SQL [-]
      select count(COMPROBANTE.ID_COMPROBANTE)
      from COMPROBANTE
      left join DETALLE_COMPROBANTE
      on DETALLE_COMPROBANTE.NUM_COMPROBANTE=COMPROBANTE.ID_COMPROBANTE and 
            DETALLE_COMPROBANTE.CONCEPTO=:num_conc and
            COMPROBANTE.FECHA_EMISION>=:desde and
            COMPROBANTE.FECHA_EMISION<=:hasta and
            DETALLE_COMPROBANTE.SUMA_EN_TOTAL=1 and
            DETALLE_COMPROBANTE.ES_IMPUESTO=0 and
            COMPROBANTE.ANULADO=0 and
            DETALLE_COMPROBANTE.TOTAL<>0 and
            COMPROBANTE.TIPO='FACTURA'      
      group by DETALLE_COMPROBANTE.CONCEPTO
Gracias.

Casimiro Notevi 28-10-2019 17:18:50

Cita:

Empezado por rruffino (Mensaje 534122)
Lo que necesito saber es cuantos registros de A tienen al menos un registro de B que cumpla cierta condicion.
Lo que necesito es que cuando el item se repite en B me lo cuente una sola vez en A.

Creo que son cosas distintas, exactamente qué quieres.

rruffino 28-10-2019 17:38:23

Respuesta
 
Hola Casimiro, como estas... gracias por responder... Yo quiero que me cuente una sola vez aquellos registros que estan en TABLA_A y que en TABLA_B tienen uno o mas registros relacionados a TABLA_A
TABLA_A
ID: Numero:
1 100
2 101
3 102

TABLA_B
ID_A Codigo
1 E
1 E
2 E
2 A
2 C
3 A

ID_A es el campo que nos relaciona las tablas.
Lo que quiero puntualmente es contar cuantos registros en TABLA_A tienen el código E en TABLA_B, para ese ejemplo la cuenta debería ser 2 que serian de los ID_A 1 y 2.
Espero ser claro.
Saludos!!!

Casimiro Notevi 28-10-2019 17:47:01

Entonces entiendo que quieres contar los registros en B, no los de A. Además, que todos los de B tendrán un registro en A.

rruffino 28-10-2019 18:08:03

Respuesta
 
Lo que quiero es contar cuantos en la Tabla_A tienen al menos un registro en la Tabla_B, pero que me cuente uno solo en Tabla_A cuando tiene mas de un registro igual en Tabla_B.
Saludos.

Al González 29-10-2019 06:56:38

Hola, rruffino.

Haz la consulta sobre la tabla detalle usando Count con Distinct, además de la unión con la tabla maestra para aplicar condiciones sobre ambas. Ejemplo:

Código:

Select Count (Distinct DC.NUM_COMPROBANTE) From DETALLE_COMPROBANTE DC
  Inner Join COMPROBANTE C On C.ID_COMPROBANTE = DC.NUM_COMPROBANTE
  Where (C.ANULADO = 0) And (DC.TOTAL <> 0)

Observa que también puedes usar alias (C, DC) para simplificar el código SQL, sobre todo cuando se combinan diferentes tablas en la misma consulta.

Espero te sea de ayuda.

Al González.


La franja horaria es GMT +2. Ahora son las 06:38:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi