dedlfix: LEFT JOIN auf zwei Spalten

Beitrag lesen

Tach!

OR hatte ich auch schon in meiner Abfrage

LEFT JOIN todo_bereich ON todo_bereich.tb_code = todo_grunddaten.bereichSender OR todo_bereich.tb_code = todo_grunddaten.bereichEmpfaenger

allerdings erhalte ich dann bei der Ausgabe zwei Datensätze obwohl nur einer vorhanden ist.

AND ist definitiv falsch. Es liegt nicht an AND versus OR sondern an einer anderen Ursache.

Gemäß deiner Beispieldaten passt der Datensatz 11 auf die eine Bedingung, der 13er auf die andere, sowie der 12er auf keine. Ergibt zwei Datensätze.

Vielleicht möchtest du ja eigentlich gar keine Veknüpfung. Versuch dein Vorhaben mal mit einer Correlated Subquery umzusetzen. Die sind meist einfacher zu verstehen als die Auswirkungen von Joins.

Man schreibt dazu für gewünschten Wert aus der zweiten Tabelle eine Subquery in die SELECT-Klausel der ersten. Wenn du mehrere Werte aus der zweiten haben möchtest, formuliere trotzdem erstmal die Correlated Subquery, dann aber nur mit der ID oder ähnlichem signifikanten Wert aus der zweiten Tabelle. Wenn du dann die Verknüpfungslogik soweit richtig hast, kannst du immer noch auf einen Join umstellen.

Beispiel einer Correlated Subquery:

SELECT a.felder, (SELECT feld FROM b WHERE id = a.b_id) FROM a

dedlfix.