Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Resultados diferentes en un query (https://www.clubdelphi.com/foros/showthread.php?t=95126)

Angel.Matilla 20-03-2021 11:34:27

Resultados diferentes en un query
 
1 Archivos Adjunto(s)
Buenas. A ver si me orientáis un poco. Tengo este query contra dos tablas en FB 2.5:
Código SQL [-]
SELECT B.Familia, SUM(B.Bruto) Bruto, SUM(B.Bruto * B.Tipo_iva / 100) Iva, SUM(A.Importe) Caja
  FROM Cajas A
  LEFT JOIN Diario B ON A.Fecha = B.Fecha
 WHERE EXTRACT(YEAR FROM A.Fecha) = 2021 AND A.Tipo IN ('EFECTIVO', 'OTROS')
 GROUP BY Familia
 ORDER BY Familia
y al ejecutarlo me da este resultado:


Si en es query elimino la tabla CAJAS y lo dejo así:
Código SQL [-]
SELECT Familia, SUM(Bruto) Bruto, SUM(Bruto * Tipo_iva / 100) Iva
  FROM Diario
 WHERE EXTRACT(YEAR FROM Fecha) = 2021
 GROUP BY Familia
 ORDER BY Familia
entonces me da este otro resultado:

que, por otra parte, es el resultado correcto.

Las tablas tienen esta estructura:
Tabla CAJAS
FECHA DATE NOT NULL
TIPO VARCHAR(15) NOT NULL
IMPORTE NUMERIC(12, 4)
Tabla DIARIO
FECHA DATE NOT NULL
FAMILIA VARCHAR(10) NOT NULL
BRUTO NUMERIC(12, 4)
TIPO_IVA SMALLINT
El archivo adjunto es un script con la definción de ambas tablas y los datos que actualmente hay en las mismas.

Casimiro Noteví 20-03-2021 13:09:06

¿Y cuál es la relación entre caja y diario?
Es que son tablas diferentes, es normal que salgan resultados diferentes.

Angel.Matilla 22-03-2021 10:02:42

Cita:

Empezado por Casimiro Notevi (Mensaje 540387)
¿Y cuál es la relación entre caja y diario?

La única relación entre ambas tablas es la fecha: Todos los movimientos que haya están en la tabla CAJA, pero no todas las entradas que haya en CAJA implican una entrada en DIARIO. Estaba intentando no tener que ejecutar dos querys distintos para rellenar un TVirtualStringTree.

Casimiro Noteví 22-03-2021 10:44:47

Pero en una misma fecha puede existir movientos en caja y diario respectivamente, que no tengan nada que ver unos con otros.
Esas tablas deberían tener una relación, pues tal y como está ahora mismo son dos tablas totalmente independientes y "descontroladas".


La franja horaria es GMT +2. Ahora son las 03:30:20.

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