MySQL - Kunden aus Tabelle die keinen Eintrag in Tabelle Bank haben

Hubivan

Mitglied
Hi,

Ich habe zwei Tabellen: Kunden und Bank

Die Tabelle Kunden ist so aufgebaut: Kundennummer(PK), Vorname, Nachname
Die Tabelle Bank ist so aufgebaut: Kundennummer(FK auf Kunden), BLZ, Kontonummer

Ich würde jetzt gerne alle Kunden aus der Tabelle Kunden auslesen, die keine keinen Eintrag in der Tabelle Bank haben.

Ich wollte das erst mit einer Differenz "EXCEPT" probieren, aber das scheint es bei MySQL nicht zu geben. Wie krieg ich das in MySQL hin?
 
Hallo Hubivan,

trotz fehlendem MINUS/EXCEPT-Set-Operator das kannst du z.B. so lösen:

SQL:
SELECT k.vorname, k.nachname 
  FROM kunden k
  LEFT OUTER JOIN bank b ON k.kunden_nr = b.kunden_nr
 WHERE b.kunden_nr IS NULL

oder eine korrelierte Abfrage mit NOT EXISTS:

SQL:
SELECT k.vorname, k.nachname
  FROM kunden k
 WHERE NOT EXISTS 
   ( SELECT b.kunden_nr FROM bank b WHERE k.kunden_nr = b.kunden_nr )

oder mittel NOT IN:

SQL:
SELECT k.vorname, k.nachname
  FROM kunden k
 WHERE k.kunden_nr NOT IN (SELECT b.kunden_nr FROM bank)

Welche davon die schnellste ist, hängt von der Version und der Datenverteilung usw. ab.

Hoffe es hilft,

Markus
 
Hallo Markus,

Vielen Dank für deine Antwort, war echt hilfreich.
Dein erster Vorschlag hat mir sogar einen ersten Lösungsansatz für ein weiteres Problem das ich habe gegeben.

Alles in allem sind deine Vorschläge auch ne gute "Wiederholung" für mich gewesen, da ich das alles eigentlich schon kenne, ist nur über ein Jahr her, dass ich das alles gelernt hab. So langsam kehrt jetzt die Erinnerung an den ganzen Kram zurück.

Danke!
Hast mir echt weitergeholfen, sogar mehr als nur bei meinem konkreten Problem :)
 
Zurück