sql >> Database >  >> RDS >> Oracle

twee linker buitenste join werkt niet Oracle sql

Het lijkt erop dat het probleem is dat u (+) . niet gebruikt voor uw language_id checks.
Uw tafel is aan de buitenkant verbonden, dus language_id is NULL wanneer er geen record wordt gevonden, maar u controleert op language_id = 2 , maar ? language_id is NULL .

Ik zie ook niet waar je resultaten gebruikt van a_tl of b_tl , denk je dat dat gewoon een probleem is van je post, niet je oorspronkelijke vraag?

Gebruik echter expliciete joins in plaats van de oude syntaxis. Als u er eenmaal aan gewend bent, is het een stuk gemakkelijker te lezen en te begrijpen.
Uw vraag kan ook baat hebben bij het gebruik van COALESCE (of NVL als je wilt):

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 )

Ik hoop dat ik je vraag goed heb, vraag het alsjeblieft als het niet werkt.



  1. mysql concat string met resultaat

  2. PHP PDO MySQL en hoe gaat het echt om met MySQL-transacties?

  3. Geaggregeerde berekeningsquery op enkele SQL-tabel

  4. Hoe krijg ik zinvolle foutmeldingen uit MySQL met behulp van PDO voorbereide instructies?