sql >> Databáze >  >> RDS >> Oracle

dvě levé vnější spojení nefungují Oracle sql

Zdá se, že problém je v tom, že nepoužíváte (+) pro vaše language_id zkontroluje.
Vaše tabulka je externí, takže language_id je NULL když není nalezen žádný záznam, ale pak zkontrolujete language_id = 2 , ale ? language_id je NULL .

Také nechápu, kde používáte výsledky z a_tl nebo b_tl , hádejte, že je to jen problém vašeho příspěvku, nikoli vašeho původního dotazu?

Místo staré syntaxe však použijte explicitní spojení. Jakmile si na to zvyknete, je mnohem snazší jej číst a pochopit.
Váš dotaz by také mohl mít prospěch z použití COALESCE (nebo NVL pokud chcete):

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 )

Doufám, že jsem vaši otázku pochopil správně, zeptejte se, pokud to nefunguje.



  1. Jak seskupit/vybrat sloupec typu JSON (PG::UndefinedFunction:ERROR:nelze identifikovat operátor rovnosti pro typ json)

  2. Statistiky s Tcl a Mysql

  3. Django emuluje chování databáze při hromadném vkládání/aktualizaci/mazání

  4. Zahrnout výsledky null do group_concat