Hallo Anna85,
soweit ich weiß, muss eine Table Expression (was der Select hinter deinem LEFT JOIN ist) immer einen Aliasnamen bekommen.
SQL ist für seine nichtssagenden Fehlermeldungen berüchtigt.
Die ON Bedingung, die angibt, welche Sätze der geJOINten Tabelle einem Satz der Haupttabelle zugeordnet werden sollen, schreibt man dahinter. Weil ich nicht weiß, wie diese Zuordnung bei Dir erfolgt, schreibe ich statt eines Feldnamens einfach mal Fragezeichen. Und damit das funktioniert, muss die Join-Spalte vom SELECT auch selektiert werden.
SELECT tab.id AS '@id',
farbe AS 'v1:zusatz'
FROM tab
LEFT JOIN( Select 'gruppe' AS '@logicalName',
fachgebiet AS '@key'
from tab) G
ON tab.??? = G.???
Ich war ja schon versucht, die Table Expression als sinnlos zu bezeichnen, aber sie ist es nicht. Wenn es kein passendes Fachgebiet gibt, sorgt die Schreibweise mit SELECT dafür, dass auch der logicalName den Wert NULL hat.
Weitere Hinweise:
- Du müsstest die in der Table Expression selektierten Spalten irgendwie im Hauptselect verwenden, andernfalls ist der Join sinnlos.
- Die Spalte
farbe
verwendest Du ohne Tabellenname oder -alias. Vermutlich ist estab
. Das solltest Du der besseren Verständlichkeit wegen hinschreiben - Sind einfache Anführungszeichen um Aliasnamen erlaubt? Wundert mich gerade, aber da Du auch XML in den Tags stehen hast, nehme ich mal an, dass dieses SQL irgendwie in einem XSLT oder so drinsteht und das die Syntax der verwendeten DB ist. Normalerweise müssten es doppelte Anführungszeichen, Backticks oder eckige Klammern sein, je nach DB.
Rolf
sumpsi - posui - clusi