En Firebird 2.0 tengo tres tablas:
- Animales (Animal_ID, Lote_ID)
- Lotes (Lote_ID, Lote_Nom)
- Pesajes (Animal_ID, FechaPesaje, Peso)
En un query quiero sumar el último peso de cada animal y agruparlo por el Lote, además del peso más alto y el peso más bajo, la diferencia entre ambos y el peso promedio de cada lote.
LOTE 1 - 5948
LOTE 2 - 9484
LOTE 3 - 8764
etc.
He intentado de todo (hasta dedicarme a otro oficio) y buscado en san google, pero no encuentro la solución.
¿Algún alma caritativa que pueda ayudarme?
Salud.
Relacionar tres tablas y btener totales (SUM, COUNT, MAX)
Comenzado por
cannabis
, nov 07 2009 12:04
2 respuestas en este tema
#1
Escrito 07 noviembre 2009 - 12:04
#2
Escrito 07 noviembre 2009 - 12:27
Encontré la solucion:
Salud.
delphi
SELECT Lotes.Lote_Nom, SUM(Pesajes.Peso) FROM Animales, Lotes, Pesajes WHERE Lotes.Lote_ID = Animales.Lote_ID AND Pesajes.Animal_ID = Animales.Animal_ID AND Pesajes.FechaPesaje = (SELECT MAX(FechaPesaje) FROM Pesajes WHERE Pesajes.Animal_ID = Animales.Animal_ID) GROUP BY Lote_Nom
Salud.
#3
Escrito 07 noviembre 2009 - 12:41
¡Corrección!
Esta es la solución:
Salud.
Esta es la solución:
delphi
SELECT Lotes.Lote_Nom, SUM(Pesajes.Peso) AS PesoTotal, MAX(Pesajes.Peso) AS PesoMayor, Min(Pesajes.Peso) AS PesoMenor, ((MAX(Pesajes.Peso) - MIN(Pesajes.Peso))) AS Diferencia FROM Animales, Lotes, Pesajes WHERE Lotes.Lote_ID = Animales.Lote_ID AND Pesajes.Animal_ID = Animales.Animal_ID AND Pesajes.FechaPesaje = (SELECT MAX(FechaPesaje) FROM Pesajes WHERE Pesajes.Animal_ID = Animales.Animal_ID) GROUP BY Lote_Nom
Salud.