Hej! Hej, Alla i en kurs:SQL fråga som gör mig tossig...
Har två tabeller. En med personlig info samt en tabell med information om man gått en viss kurs.
Via en sökfunktion skall man kunna välja i en listruta att söka på alla som INTE har gått en viss kurs, eller via en annan listruta vilka som har gått en viss kurs.
Ex.
Väljer Matte i listrutan. Visar alla personer som gått Mattekursen/inte gått Mattekursen
Att lista de som har gått en viss kurs går bra.
SELECT tblKursprofil.*, tblPerson.*
FROM tblKursprofil,tblPerson
WHERE tblKursprofil.Kursnamn='varKursval' AND tblKursprofil.Anvnamn=tblPerson.Anvnamn
Men hur gör jag om jag vill lista alla som INTE har gått kursen, känns som om jag provat alla möjliga varianter... SUCK...
Snälla hjälp!
TACK PÅ FÖRHAND!Sv: SQL fråga som gör mig tossig...
prova något i stil med :
SELECT tblPerson.*
FROM tblPerson
WHERE NOT EXIST (
SELECT NULL
FROM tblKursprofil
WHERE tblKursprofil.Kursnamn='varKursval'
AND tblKursprofil.Anvnamn=tblPerson.Anvnamn)
/UffeSv: SQL fråga som gör mig tossig...
SELECT tblPerson.*
FROM tblKursprofil INNER JOIN tblPerson ON tblKursprofil.Anvnamn=tblPerson.Anvnamn
WHERE tblKursprofil.Kursnamn = 'varKursval'
Alla som inte är med i en kurs:
SELECT tblPerson.*
FROM tblPerson LEFT JOIN tblKursprofil ON (tblKursprofil.Anvnamn=tblPerson.Anvnamn) AND (tblKursprofil.Kursnamn = 'varKursval')
WHERE tblKursprofil.Kursnamn Is Null
Eller:
SELECT tblPerson.*
FROM tblPerson
WHERE tblPerson.Anvnamn IN (SELECT tblKursprofil.Anvnamn
FROM tblKursprofil
WHERE tblKursprofil.Kursnamn = 'varKursval')
Att anväda EXISTS är inte så bra. Eftersom frågan måste utvärderas för varje rad.