Säg att jag har två tabeller, en med personer och en med städer.
Ex:
Tabell1 har kolumnerna PersonId och Namn med värden som 1 - Bengt, 2 - Göran, 3 - Abdullah, 4 - Ann-Kristin etc
Tabell2 har kolumnerna PersonId och stad, 1 - Borås, 1 - Allingsås, 2 - Mjölby, 2 - Finspång, 2 - Mora, 3 - Umeå, 3 - Borås osv. osv.
PROBLEM
Hur skriver jag en fråga som listar alla personer som INTE varit i Borås (inklusive de som inte varit någonstans)?
Gör jag en
SELECT Tabell1.namn
FROM Tabell1, Tabell2
WHERE Tabell1.PersonId = Tabell2.PersonId(+)
AND (Tabell2.Stad <> 'Borås' OR Tabell2.Stad IS NULL)
ORDER BY 1
så kommer de som varit i Borås OCH andra städer att visas, bara de som ENDAST varit i Borås faller bort. Hjälp!
spangoMedlem sedan juni 20008 205 inlägg Typ
SELECT Tabell1.namn
FROM Tabell1
LEFT JOIN Tabell2 ON Tabell1.PersonId = Tabell2.PersonId
WHERE Tabell2.Stad = 'Borås'
GROUP BY Tabell1.Namn
HAVING COUNT(Tabell2.Stad) = 0
ORDER BY tabell1.namn
Tack spango,
dock returnerar koden alltid 0 träffar eftersom den först söker ut de som varit i Borås (person 2 som varit i Mjölby, Finspång och Mora kommer inte med vilket de ska):
WHERE Tabell2.Stad = 'Borås'
och sedan utesluter dem:
GROUP BY Tabell1.Namn
HAVING COUNT(Tabell2.Stad) = 0
Peter SMedlem sedan dec. 20025 483 inlägg select t1.namn
from tabell t1
where t1.personid
not in ( select personid
from tabell2
where namn = 'Borås' )
spangoMedlem sedan juni 20008 205 inlägg red. Jag är ju helt slut.