SQL Query

Status
Niet open voor verdere reacties.

jeroendk

Gebruiker
Lid geworden
11 sep 2009
Berichten
45
hallo ,
Ik heb een opdracht gekregen om uit de volgende tabel:

METERSTAND

id--- nummer ------ klant ------ datum
_____________________________________________________
1 ---| 15 -------------| AH ---- -----| 01-01-2008
2 ---| 16 -------------| c1000 ------| 01-01-2008
3 ---| 17 ----- -------| lidl -----------| 04-02-2008
4 ---| 15 ------ ------| aldi ----------| 17-05-2008
5 ---| 18 ----------- -| AH ---- ----- | 07-05-2008
6 ---| 19 ------------ | hoogvliet ---| 11-12-2008
7 ---| 15 ------------ | NULL--------| 29-12-2008
8 ---| 15 ------ ------| aldi ----------| 04-01-2009


Het nummer is het nummer van het pand waar het bedrijf in zit, klant is het bedrijf die het pand huurt en de datum is de datum vanaf wanneer ze in het pand zitten, als er een andere huurder komt voor een pand dan is de datum dat hun er in gaan dus de datum dat het andere bedrijf er uit gaat, als de klant NULL is staat het pand leeg.

nou moet ik met 1 query daar de volgende tabel uit halen:

Nummer --- Klant --- Begindatum ---- Einddatum
__________________________________________________________
15 --------| AH ---------|01-01-2008 ----| 17-05-2008
16 --------| c1000 -----|01-01-2008 ----| 11-09-2009(heden)
17 --------| lidl ----------|04-02-2008 ----| 11-09-2009(heden)
15 --------| aldi ---------|17-05-2008 ----| 29-12-2008
18 --------| AH ----------|17-05-2008----| 11-09-2009(heden)
19 --------| hoogvliet --|11-12-2008----| 11-09-2009(heden)
15 --------| NULL ------|29-12-2008 ----| 04-01-2009
15 --------| aldi ---------|04-01-2009 ----| 11-09-2009(heden)

dus met het pand nummer, de klant, de datum dat ze het pand in gaan en de datum dat ze het pand uitgaan.

nou lukt het me natuurlijk wel om de eerste 3 (nummer klant begindatum) te krijgen maar ik heb geen idee hoe ik met me query ook de einddatum er uit kan halen

is er iemand die mij hier mee kan helpen :)

m.v.g.
jeroen
 
Dat is eigenlijk niet zo'n handige tabel structuur, je kunt beter de eind-datum gewoon in de tabel zetten.

Om het op deze manier te doen... uhm... subquery erin die voor elk pand nog een keer alle panden op haalt, sorteert op einddatum en degene selecteerd die het dichts boven de begin datum zit?

Dus dat wordt dan iets van " WHERE mainquery.pand = subquery.pand AND subquery.einddatum > mainquery.begindatum ORDER BY subquery.einddatum ASC "

Ik hoop dat je er iets aan hebt :)
 
ja als ik de opdracht zou kunne veranderen zou ik dat ook doen ja :P
maar dat kan niet.

mainquery.pand = subquery.pand AND subquery.einddatum > mainquery.begindatum ORDER BY subquery.einddatum ASC "

ik ben niet zo hel goed in subquerys dus ik snap niet helemaal waar dat subquery. en mainquery. voor staat die hebben lijk mij toch allebei dezelfde naam? (de naam van de tabel ofniet) ?

bedankt voor je reactie :)
 
Je kunt een tabel meerdere keren tegelijk openen om hem met zichzelf te vergelijken, door beide instanties een andere naam te geven. Op die manier kun je gegevens matchen binnen dezelfde tabel.

Je moet de tabel dan renamen:
[sql]
SELECT t1.a
FROM table AS t1
[/sql]

zodat SQL de twee instanties uit elkaar kan houden.
 
oke dan kom ik dus op zo iets uit allen zo werkt die niet :P
[SQL]
SELECT meterstand.mtr_nummer, meterstand.mtr_klant, meterstand.mtr_datum AS begindatum
FROM meterstand AS mainquery
(select meterstand.mtr_datum AS einddatum
FROM meterstand AS subquery
WHERE mainquery.mtr_nummer = subquery.mtr_nummer
AND subquery.einddatum > mainquery.begindatum
order by subquery.einddatum ASC)[/SQL]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan