SELECT "Alle Datensätze ohne Bezug in einer anderen Tabelle"
Peter Thomassen
- datenbank
Hallo,
ich muss MySQL und kann deshalb keine Subselects verwenden.
Ich habe zwei Tabellen, kunde und vertrag; letztere enthält für jeden Datensatz den zugehörigen Kunden im Feld id_kunde. Ich möchte nun alle Kunden, die keinen Vertrag haben, auslesen:
SELECT * FROM kunde WHERE id NOT IN(SELECT id_kunde FROM vertrag);
Naja, das wäre ein Subselect, aber die stehen mir ja nicht zur Verfügug. Gibt es noch eine andere Möglichkeit, um das Ziel zu erreichen?
Danke!
Peter
Hallo Peter,
SELECT * FROM kunde WHERE id NOT IN(SELECT id_kunde FROM vertrag);
Naja, das wäre ein Subselect, aber die stehen mir ja nicht zur Verfügug. Gibt es noch eine andere Möglichkeit, um das Ziel zu erreichen?
SELECT kunde.*, COUNT(vertrag.id_kunde) as anz_vertraege FROM kunde LEFT JOIN vertrag ON (vertrag.id_kunde = kunde.id) GROUP BY kunde.id HAVING anz_vertraege = 0 ;
Viele Grüße,
Christian
Hallo Christian,
SELECT * FROM kunde WHERE id NOT IN(SELECT id_kunde FROM vertrag);
Naja, das wäre ein Subselect, aber die stehen mir ja nicht zur Verfügug. Gibt es noch eine andere Möglichkeit, um das Ziel zu erreichen?
SELECT kunde.*, COUNT(vertrag.id_kunde) as anz_vertraege FROM kunde LEFT JOIN vertrag ON (vertrag.id_kunde = kunde.id) GROUP BY kunde.id HAVING anz_vertraege = 0 ;
Danke! Habe das noch ein bisschen umgeschrieben, hat geholfen :-)
Würde ja SQLite verwenden, wenn es ALTER TABLE unterstützen würde ... ich brauch das in der Entwicklungsphase recht häufig :-) Mh.
Bye,
Peter