Join Abfrage nach bestimmtem Kriterium

CoverUnder

Mitglied
Hallo,

so langsam nähere ich mich komplexeren Abfragen und habe nun folgendes Problem:

Ich habe zwei Datenbank Tabellen.

Kunden: mit der ID, dem Namen und der Adresse

Bestellungen: mit der Kunden-ID und den Bestell-Details

Jetzt möchte ich alle Kunden aus der Datenbank auslesen, die noch nichts bestellt haben. Also praktisch all jene, die keinen Eintrag in der Tabelle "Bestellungen" haben - also deren ID nirgendwo in einem der Datensätze vorkommt. Nur komme ich leider absolut nicht drauf, wie ich das realisieren könnte. Bestimmt mit einem Tabellen-Join, aber mit diesem Kapitel kenne ich mich leider noch nicht wirklich aus, weshalb ich da nun trotz google und einlesen so richtig anstehe. Über Hilfe und Tipps würde ich mich daher sehr freuen!

Grüße
 
Nimm ein LEFT JOIN von Kunden zu Bestellungen. Das bedeutet, dass alle Kunden ausgelesen werden und zu denen wo es eine Bestellung gibt, diese auch. Nun kann man prüfen, welche Kombinationen dass keine Werte im Bestellungs-Anteil haben

SQL:
SELECT
    k.*
FROM
    kunden AS k
    LEFT JOIN bestellungen AS b
        ON k.id = b.kundenid
WHERE
    b.id IS NULL;
 
Zuletzt bearbeitet von einem Moderator:
Herzlichen Dank!
Zuerst hatte ich es folgendermaßen:

SQL:
SELECT * FROM Kunden
LEFT JOIN Bestellungen 
ON Kunden.Kundenid = Bestellungen.Kundenid
WHERE Kundenid IS Null;

Aber das wollte nicht so recht. Jetzt habe ich es so umgesetzt wie du gesagt hast und es scheint zu klappen! Vielen Dank nochmal für die Hilfe!
 
Zuletzt bearbeitet von einem Moderator:
Da hattest du ein Überlegungsfehler. In deiner alten Version prüfst du alle Kombinationen die keinen Kunden haben
a) willst du gerade das umgekehrte
b) gibt das immer eine leere Menge zurück, da Kunde vor dem LEFT JOIN steht und Kunden die Grundmenge darstellt
 

Neue Beiträge

Zurück