SQL-Frage

Hallo Leute,

ich versuche gerade folgendes zu erreichen, stehe aber total auf dem Schlauch:
Tabelle Autobesitz

name | Automarke | Kaufjahr
Klaus | Audi | 1980
Klaus | VW | 1987
Klaus | Audi | 1993
Klaus | Toyota | 1994
Gerda | VW | 1970
Gerda | VW | 1975
...

Nun möchte ich gerne diejenigen rausfischen, die niemals eine bestimme Automarke gefahren sind. Mein Ansatz trägt natürlich nicht, weil es eben alle Namen findet, die irgendwann mal nicht die gesuchte Marke gefahren sind.

SELECT DISTINCT name FROM Autobesitz WHERE Automarke != "Toyota"

Ich bin gerade echt blind. Sorry. Kann mir jemand bitte einen Tritt geben?

Herzliche Grüße,

Günther

Ich wieder… Unterabfragen waren zu einfach:

SELECT name FROM auto
WHERE name NOT IN 
(SELECT DISTINCT name FROM auto AS autoSUB WHERE autoSUB.marke = "Toyota")

Servus,

du brauchst hier die Syntax EXCEPTION JOIN / RIGHT OUTER JOIN oder alternativ WHERE NOT EXISTS.

Du willst hier doch abfragen, welche Kombination aus Name/Automarke nicht in der Tabelle Autobesitz existiert:

SELECT DISTINCT outertable.name
FROM autobesitz AS outertable
EXCEPTION JOIN autobesitz AS innertable ON innertable.name = outertable.name
 AND innertable.marke='Toyota'

Hiermit findest du die Namen derer, die nie einen Toyota fuhren.

Je nach DB musst du EXCEPTION JOIN durch RIGHT OUTER JOIN ersetzen,
die WHERE NOT EXISTS Syntax stelle ich auf Nachfrage ein.

Viel Erfolg,
SomeOne