webForumDet fria alternativet

Presentera resultat som EJ fick träff

4 svar · 369 visningar · startad av klockren

klockrenMedlem sedan sep. 200151 inlägg
#1

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
#2

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
klockrenMedlem sedan sep. 200151 inlägg
#3

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
#4
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
#5

red. Jag är ju helt slut.

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)