Ga naar inhoud

[SQL] Query wordt soms niet uitgevoerd


Aanbevolen berichten

Voor een schoolopdracht moet ik een SQL-query maken, die alle contracten, die een medewerker met medewerkernummer 13 in de maand mei 2002 bij een bedrijf heeft, moet teruggeven. Hiervoor is benodigd de tabel contract. In deze tabel wordt het medewerkerID bijgehouden en wordt alleen de begindatum van dat contract bijgehouden, de einddatum is overbodig. De query die ik nu heb, is: SELECT * FROM Contract WHERE MedewerkerID = 13 AND Begindatum <= #06/01/2002# AND Begindatum >= (SELECT Max(Begindatum) FROM Contract WHERE MedewerkerID = 13 AND Begindatum <= #05/01/2002#) ORDER BY Begindatum Wanneer een medewerker voor het begin van de maand nog geen contracten heeft, dan loopt de query dus spaak. Ik heb echter nog geen andere oplossing kunnen vinden. Voor de duidelijkheid: Een contract kan op iedere dag van het jaar ingaan, in de maand mei kan een medewerker dus in principe 31 verschillende contracten hebben. [ Dit bericht is bewerkt door: TweakersOnly op 2002-05-14 19:10 ]
Link naar reactie
[quote:1d3a316bcd] ..die alle contracten, die een medewerker met medewerkernummer 13 in de maand mei 2002 bij een bedrijf heeft, moet teruggeven. Hiervoor is benodigd de tabel contract. In deze tabel wordt het medewerkerID bijgehouden en wordt alleen de begindatum van dat contract bijgehouden, de einddatum is overbodig. [/quote:1d3a316bcd] einddatum is overbodig, dus alles tot en met mei? SELECT * FROM Contract WHERE (MedewerkerID = 13) AND (Begindatum < #06/01/2002#) [quote:1d3a316bcd] SELECT * FROM Contract WHERE MedewerkerID = 13 AND Begindatum <= #06/01/2002# AND Begindatum >= (SELECT Max(Begindatum) FROM Contract WHERE MedewerkerID = 13 AND Begindatum <= #05/01/2002#) ORDER BY Begindatum [/quote:1d3a316bcd] Wat bereken je in de sub query? Het laatste contract t/m 1 mei. [quote:1d3a316bcd] Wanneer een medewerker voor het begin van de maand nog geen contracten heeft, dan loopt de query dus spaak. Ik heb echter nog geen andere oplossing kunnen vinden. [/quote:1d3a316bcd] zie boven [quote:1d3a316bcd] Voor de duidelijkheid: Een contract kan op iedere dag van het jaar ingaan, in de maand mei kan een medewerker dus in principe 31 verschillende contracten hebben. [/quote:1d3a316bcd] wat moet het resultaat zijn? Alle contracten t/m de maand mei (zie sqlcode hierboven) of alle contracten die in mei zijn begonnen?
Link naar reactie
Wanneer ik het zo lees denk ik ook dat je het te moeilijk hebt gemaakt. Wat is precies de vraag? Alle contracten die in mei zijn begonnen? Of alle contracten die in mei nog openstonden? In het eerste geval volstaat inderdaad: select * from contracten where id = 13 and begindatum >= 01052002 and begindatum <= 31052002 In het tweede geval hoef je alleen te testen of de begindatum voor 1 mei ligt (mits de einddatum werkelijk overbodig is).
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...