Otto Wyss: SQL JOIN von 2 Tabellen mit Anzahlbeschränkung

Ich habe 2 Tabellen, die über einen LEFT JOIN verbunden sind. Bis jetzt hatte ich pro Eintrag in der Tabelle jeweils 0 oder 1 korrespondierenden Eintrag in der verbundenen Tabelle. Dies kann ich elegant mit dem LEFT JOIN abhandeln. Jetzt gibt es aber in einigen wenigen Fällen auch 2 Einträge in der zweiten Tabelle pro Eintrag.

Tabelle 1     Tabelle 2
id, text      id, text2
---------     ---------
A, A-Test     A, Resultat 1
B, B-Test     (nicht vorhanden)
C, C-Test     C, Resultat 2
D, D-Test     D, Resultat 1
              D, Resultat 2

Die Abfrage sollte folgendes liefern
id, text, text2
---------------------
A, A-Test, Resultat 1
B, B-Test, NULL
C, C-Test, Resultat 2
D, D-Test, Resultat 1

Gibt es eine Möglichkeit bei einem JOIN die Anzahl Einträge (=1) zu begrenzen? Ist das überhaupt machbar in einen Statement?

  1. Hallo,

    Tabelle 1     Tabelle 2
    id, text      id, text2
    ---------     ---------
    A, A-Test     A, Resultat 1
    B, B-Test     (nicht vorhanden)
    C, C-Test     C, Resultat 2
    D, D-Test     D, Resultat 1
                  D, Resultat 2

    Die Abfrage sollte folgendes liefern
    id, text, text2

    A, A-Test, Resultat 1
    B, B-Test, NULL
    C, C-Test, Resultat 2
    D, D-Test, Resultat 1

    warum den Datensatz mit "Resultat 1" und nicht den mit "Resultat 2"

    Gibt es eine Möglichkeit bei einem JOIN die Anzahl Einträge (=1) zu begrenzen? Ist das überhaupt machbar in einen Statement?

    Falls Du eine angemessene Aggregatsfunktion nutzen kannst, geht dies.
    Falls es Dir egal ist, welchen Datensatz Du bekommst, dann geht es mit dem speziellen Datenbankmanagementsystem MySQL in seiner Standardkonfiguration immer.

    Freundliche Grüße

    Vinzenz

  2. moin,

    Gibt es eine Möglichkeit bei einem JOIN die Anzahl Einträge (=1) zu begrenzen? Ist das überhaupt machbar in einen Statement?

    das ist durchaus machtbar, ich würde dazu eine korrelierte unterabfrage einsetzen. du musst halt nur ein kriterium besitzen, das entscheidet, welchen datensatz von den vielen möglichen du haben willst.zur not geht es auch über den primary key, wenn du keine fachliche entscheidung hast.

    Ilja