Vraag over een specifieke query

Status
Niet open voor verdere reacties.

Laroguz

Gebruiker
Lid geworden
27 mei 2006
Berichten
97
Ik heb tabel met daarin 3 velden:
Silo
Datum
Saldo

In deze tabel houden we van 42 silo's de mutaties bij, m.a.w. in silo 1 gaat op 1-1-08 10000kg bij en is het saldo dus 10000kg. Op 2-1-08 gaat er 7000kg uit en is het saldo 3000kg.
Nu wil ik een overzicht maken van de actuele status van deze 42 silo's. M.a.w. hoe maak ik een query die me uit deze tabel van elke silo de hoogste, dus laatste, datum haalt met het daarbij behorende saldo.

Bij voorbaat dank voor alle hulp
Wim Janssen
 
dat doe je met een group by query.
stel dat je tabel X heet:
Code:
select Silo, sum(Saldo) from X group by Silo
met deze query krijg je de actuele inhoud van alle silo's tot en met de laatste datum.
Ik neem aan dat als er kilo's uit gaan dit dan wordt aangegeven met een negatief saldo?

HTH:D
 
Hallo, dank voor je antwoord, maar helaas geeft dit een totaal van alle saldo's. Wat er bij komt en wat er uit gaat wordt in andere velden geregeld. Het [Saldo]veld is bij het [Datum]veld de actuele status. Dus ik zoek van alle silo's het [Saldo]veld bij de meest actuele [Datum]

bij voorbaat dank
Wim Janssen
 
In dat geval heb je er een probleem bij want je database is niet genormaliseerd.
Het saldo zoals jij het opslaat is een process gegeven en moet je derhalve niet opslaan.

Om terug te komen op je vraag:

Je moet eerst het unieke ID te weten komen die hoort bij de meest actuele datum bij een bepaalde silo.
Dus
Code:
select max(datum), silo from X group by silo
deze query (Y) geeft je voor iedere silo de laatste datum. Deze twee velden gebruik je nu om het saldo op te vragen
Code:
select silo, datum, saldo from X inner join Y on X.silo = Y.silo and X.datum = Y.datum

Enjoy!
 
Hallo, dank je het werkt. Deze combinatie heb ik nog nooit eerder mee gewerkt.

Maar nu loop ik tegen het volgende probleem. Het kan natuurlijk gebeuren dat er meer mutaties op een dag zijn en dan krijg ik dus ook meerdere saldo's. Daarom heb ik er een tijdveld aan gekoppeld zodat ik dus de hoogste datum EN de hoogste tijd moet hebben.

Ik heb al even zitten stoeien met jouw code, maar kom toch niet echt verder. Zou je a.u.b. nog even verder mee willen denken.

bij voorbaat dan
Wim
 
Gewoon blijven proberen. Ik ben er uit. Het werkt perfect.

Dank je nogmaals
Wim Janssen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan