SQL JOIN von 2 Tabellen mit Anzahlbeschränkung
Otto Wyss
- datenbank
0 Vinzenz Mai0 Ilja
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?
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 2Die Abfrage sollte folgendes liefern
id, text, text2A, 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
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