Voorwaarde in een subquery

  • Onderwerp starter Onderwerp starter rxr
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

rxr

Gebruiker
Lid geworden
24 okt 2008
Berichten
105
Hallo,

Ik zit met een probleem waar ik hopelijk snel een antwoord op kan krijgen.

Ik heb 3 tabellen waar ik wat gegevens uit nodig heb. Ik heb namelijk de tabel klanten, instructeurs en AanvragenInschrijvingen

De velden die belangrijk zijn voor mijn vraag zijn deze

Klanten

Klantvoornaam, Klantachternaam, KlantNummer

Instructeur
InstructeurVoornaam
InstructeurNummer

AanvragenInschrijvingen
DatumGeslaagd
KlantNummer
Instructeur nummer

Je moet AanvragenInschrijvingen als tussen tabel zien tussen klant en instructeur.

Dit is nu mijn query

SELECT *
FROM KLANTEN
WHERE KlantNummer IN (SELECT AanvraagNummer
FROM AanvragenInschrijvingen
WHERE InstructeurNummer IN (SELECT InstructeurNummer
FROM Instructeurs
WHERE InstructeurVoornaam = "Petra"))

Dit geeft als resulaat alle mensen die bij petra hebben gelest maar ik wil graag de leerlingen zien die op dit moment bij haar lessen. Dus DatumGeslaagd = NULL maar dat krijg ik niet voor elkaar. Ik heb al verschillende dingen geprobeert maar het lukt niet. Iemand een suggestie ?
 
Je moet geen subqueries gebruiken maar inner joins. Qua performance zijn die ook stukken sneller. In jouw geval wordt dat:
Code:
Select k.* from klanten k inner join AanvragenInschrijvingen a on k.klantnummer = a.klantnummer 
inner join Instructeur i on i.instructeurnummer on a.intstructeurnummer 
where i.instructeurvoornaam = "Petra"
hier kan je aan toevoegen
Code:
 and DatumGeslaagd is null
als je de klanten wil hebben die momenteel bij Petra lessen.(aangenomen dat ze niet voortijdig afhaken.

Enjoy!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan