[SQL] Problemen met NULL-waarden

Pagina: 1
Acties:

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 00:13
Situatie: Ik heb twee tabellen Contract en Feestdag waarin zich bevinden:
- sleutel
- begindatum
- einddatum

In de tabel Contract zit ook nog een referentiele sleutel naar een medewerker.

In de tabel Feestdag zijn alle velden altijd ingevuld, in de tabel Contract kan de einddatum NULL zijn, iemand kan namelijk een dienstverband voor onbepaalde tijd hebben.

Ik wil een query maken die voor een bepaalde persoon de voor hem geldende feestdagen ophaalt. Voor de contracten die een einddatum hebben, is dit geen probleem namelijk:

code:
1
2
3
4
SELECT * FROM Feestdag
WHERE Feestdag.Begindatum >= Contract.Begindatum
AND Feestdag.Einddatum <= Contract.einddatum
AND Contract.Medewerkernummer = 1


Hoe moet ik echter een query maken als ik vantevoren niet weet of de einddatum van een contract bekend is? De volgende vergelijking:
code:
1
SELECT * FROM Feestdag WHERE Einddatum <= Null

geeft namelijk altijd 0 resultaten terug (logisch).

  • RBouman
  • Registratie: Juli 2001
  • Laatst online: 02-08 00:15

RBouman

René

SELECT * FROM Feestdag WHERE Einddatum is Null
SELECT * FROM Feestdag WHERE Einddatum not is Null
bij NULL geen = maar de letters IS gebruiken!

Systeem: Abit IC7-G + 2 x Maxtor 120Gb + 1024MB Corsair TWINX PC3200 + Pentium IV 2,8Gb Radeon 8500le Iiyama A902MT + Plextor PX-708a


Verwijderd

of ISNULL()

maarja of elke sql dat heeft, lijkt me niet...

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 00:13
RBouman schreef op 29 augustus 2002 @ 14:47:
SELECT * FROM Feestdag WHERE Einddatum is Null
SELECT * FROM Feestdag WHERE Einddatum not is Null
bij NULL geen = maar de letters IS gebruiken!
Je hebt het probleem niet goed begrepen. Een contract van een medewerker bestaat uit een begindatum en eventueel een einddatum.

Ik wil een overzicht van alle feestdagen:
- waarvan de begindatum groter of gelijk is aan de begindatum van een contract
- waarvan de einddatum van de feestdag kleiner is dan de einddatum van een contract, wanneer de einddatum van het contract niet NULL is.

Misschien is het zo duidelijker. :)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Ik denk dat je op zoek bent naar de volgende query:

SELECT * FROM Feestdag
WHERE Feestdag.Begindatum >= Contract.Begindatum
AND (Feestdag.Einddatum <= Contract.einddatum OR Contract.einddatum IS NULL)
AND Contract.Medewerkernummer = 1

Never underestimate the power of


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 00:13
cameodski schreef op 29 augustus 2002 @ 14:53:
Ik denk dat je op zoek bent naar de volgende query:

SELECT * FROM Feestdag
WHERE Feestdag.Begindatum >= Contract.Begindatum
AND (Feestdag.Einddatum <= Contract.einddatum OR Contract.einddatum IS NULL)
AND Contract.Medewerkernummer = 1
Thanx! Cameodski is da man. :) :)
Pagina: 1