sql >> Base de Datos >  >> RDS >> Oracle

dos combinación externa izquierda no funciona Oracle sql

Parece que el problema es que no estás usando (+) para su language_id cheques.
Su tabla está unida externamente, por lo que language_id es NULL cuando no se encuentra ningún registro, pero luego verifica language_id = 2 , pero ? language_id es NULL .

Tampoco veo dónde usas los resultados de a_tl o b_tl , supongo que es solo un problema de su publicación, no de su consulta original?

Sin embargo, utilice uniones explícitas en lugar de la sintaxis anterior. Una vez que te acostumbras, es mucho más fácil de leer y comprender.
Tu consulta también podría beneficiarse del uso de COALESCE (o NVL si lo desea):

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 )

Espero haber respondido correctamente a su pregunta, por favor pregunte si no funciona.