Oracle
 sql >> база данни >  >> RDS >> Oracle

две леви външни съединения не работят Oracle sql

Изглежда, че проблемът е, че не използвате (+) за вашия language_id проверки.
Таблицата ви е външно свързана, така че language_id е NULL когато не е намерен запис, но след това проверявате за language_id = 2 , но ? language_id е NULL .

Също така не виждам къде използвате резултати от a_tl или b_tl , предполагам, че това е проблем само на публикацията ви, а не на първоначалното ви запитване?

Въпреки това, моля, използвайте изрични съединения вместо стария синтаксис. След като свикнете с него, е много по-лесно за четене и разбиране.
Вашата заявка също може да се възползва от използването на COALESCE (или NVL ако желаете):

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 )

Надявам се, че разбрах правилно въпроса ви, моля, попитайте, ако не работи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. регулярен израз за различни дълги думи, разделени на редове

  2. Фина настройка на Oracle DG40DBC

  3. Възможно ли е да се получат множество стойности от подзаявка?

  4. Пример за APEX_ZIP

  5. Как да изтрия няколко стойности в SQL?