dedlfix: LEFT JOIN auf zwei Spalten

Beitrag lesen

Tach!

SELECT id, code, kurzbeschreibung, art, erstellungsdatum, job, bereichSender, apSender, bereichEmpfaenger, apEmpfaenger, prio, status,
                                         fertigstellung_sender, fertigstellung_uhrzeit_sender, fertigstellung_empfaenger, fertigstellung_uhrzeit_empfaenger, beschreibung,
                                         ta_titel, tp_titel, ts_titel, tb_titelkurz 
                                  
                                  FROM todo_grunddaten g
                                 
                                  LEFT JOIN todo_art ON todo_art.ta_code = g.art
                                  LEFT JOIN todo_prio ON todo_prio.tp_code = g.prio
                                  LEFT JOIN todo_status ON todo_status.ts_code = g.status
                                  LEFT JOIN todo_bereich a ON g.bereichSender = a.tb_code
                                  LEFT JOIN todo_bereich b ON g.bereichEmpfaenger = b.tb_code

Als Fehlermeldung erhalte ich

1052 - Feld 'tb_titelkurz' in field list ist nicht eindeutig

Verstehe ich nicht, das Feld heißt genau so.

Du hast die Lösung ja schon gefunden, ich sag trotzdem noch ein paar Worte, z.B. falls irgendwer anders drüber stolpert. Die Eindeutigkeit bezieht sich hier nicht auf den Namen, sondern auf die Herkunft. Die ist nämlich nicht klar, wenn es mehrere Felder mit demselben Namen in der Ergebnismenge gibt. Die Dopplung kommt zustande, weil für das gewünschte Ergebnis die Tabelle todo_bereich zweimal gejoint wurde und ihre Felder damit doppelt enthalten sind. Nun muss eindeutig gekennzeichnet werden, welche Tabelle nun gemeint ist, was man durch Voranstellen des Namens oder des vergebenen Alias macht. Im Übrigen empfiehlt es sich auch für die anderen Tabellen einen Alias zu vergeben und deren Felder mit diesem Alias zu versehen. Und zwar nicht, weil es notwendig wäre - ist es ja nicht, solange keine Namensdopplungen auftreten -, sondern weil man so einfacher nachvollziehen kann, welches Feld aus welcher Tabelle kommt.

dedlfix.