Oracle
 sql >> Datenbank >  >> RDS >> Oracle

zwei linke äußere Verknüpfung funktioniert nicht Oracle sql

Sieht so aus, als ob das Problem darin besteht, dass Sie (+) nicht verwenden für Ihre language_id überprüft.
Ihre Tabelle ist Outer-Joined, also language_id ist NULL wenn kein Datensatz gefunden wird, aber dann suchen Sie nach language_id = 2 , aber ? language_id ist NULL .

Ich sehe auch nicht, wo Sie Ergebnisse von a_tl verwenden oder b_tl , schätze, das ist nur ein Problem deines Beitrags, nicht deine ursprüngliche Anfrage?

Verwenden Sie jedoch statt der alten Syntax explizite Joins. Sobald Sie sich daran gewöhnt haben, ist es viel einfacher zu lesen und zu verstehen.
Ihre Anfrage könnte auch von der Verwendung von COALESCE (oder NVL wenn du magst):

SELECT COALESCE( a_tl.a_disp_name, a.a_name ) AS a_name,
       COALESCE( b_tl.b_disp_name, b.b_name ) AS b_name,
       a.a_id,
       b.b_id
FROM a
JOIN b ON ( b.b_id = a.a_id )
LEFT JOIN a_tl ON ( a_tl.a_id = a.a_id AND a_tl.language_id = 2 )
LEFT JOIN b_tl ON ( b_tl.b_id = b.b_id AND b_tl.language_id = 2 )

Ich hoffe, ich habe Ihre Frage richtig verstanden. Bitte fragen Sie, wenn es nicht funktioniert.