Peter Thomassen: SELECT "Alle Datensätze ohne Bezug in einer anderen Tabelle"

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

  1. 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

    1. 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