Toon posts:

[SQL] WHERE NOT EXISTS instructie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier een Access database met 2 tabellen:

Een klantentabel en een betalingstabel.

Nu wil ik een query maken waarbij Access aangeeft bij welke klant nog nooit een betaling is aangemaakt.

Dus zoiets:
code:
1
2
3
SELECT Klant.ID, Betalingen.BetalingID
FROM Klant INNER JOIN Betalingen ON Klant.ID = Betalingen.KlantID
WHERE (((Betalingen.BetalingID)NOT EXISTS));

Maar hiermee krijg ik een syntaxis error.

Iemand een idee?

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Ja, je query klopt niet.

Zoek ook eens naar een "WHERE ... IN" statement voor SQL, is een efficientere oplossing.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
2
3
4
5
SELECT Klant.ID
FROM Klant 
WHERE NOT EXISTS (SELECT Betalingen.BetalingID
            FROM Betalingen
            WHERE Klant.ID = Betalingen.Klant.ID)

Zo zou ie er in Oracle SQL uitzien.

Who is John Galt?


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

of in jouw oplossing zoiets:
code:
1
2
3
SELECT Klant.ID, Betalingen.BetalingID
FROM Klant INNER JOIN Betalingen ON Klant.ID = Betalingen.Klant.ID
WHERE Betalingen.BetalingID IS NULL;

Let nog even op: Betalingen.Klant.ID is geen geldige kolomnaam, moet denk ik zijn Betalingen.KlantID

Het is trouwens een goede gewoonte om in de Klant tabel de id ook KlantID te noemen en niet alleen ID, dat maakt het controleren van join condities een stuk eenvoudiger.

Het gebruik van tabel aliassen is blijkbaar helemaal uit de mode geraakt

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op woensdag 12 december 2001 13:14 schreef dusty het volgende:
Zoek ook eens naar een "WHERE ... IN" statement voor SQL, is een efficientere oplossing.
juist niet, bij een EXISTS constructie kan de sub-select afgebroken worden als er iets gevonden is en is een table scan dus (soms) niet nodig.

Today's subliminal thought is:


Verwijderd

Topicstarter
Op woensdag 12 december 2001 13:21 schreef Goodielover het volgende:
of in jouw oplossing zoiets:
Dat gaat dus niet, dat Is Null. Daar er geen betalingsID is kan hij niet gaan zoeken naar een ID die Null is.
Het moet dus echt met WHERE NOT IS.

  • Greyfox
  • Registratie: Januari 2001
  • Laatst online: 21:53

Greyfox

MSX rulez

Kan een Exists-statement wel in Access?

MSX 2 rulez more


Verwijderd

Topicstarter
Yep EXISTS kan gewoon:

Het was ctrl-c, ctrl-v met de code van Justmental.
Werkt dus ook bij Access, naast Oracle.

Thanx people!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23:59
Zie ook:
[topic=346496/1/200]

[]
Zeker not-exists-in-access-week deze week?
[]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1