sql >> Databasteknik >  >> RDS >> Oracle

två vänster yttre koppling fungerar inte Oracle sql

Det verkar som att problemet är att du inte använder (+) för ditt language_id kontroller.
Din tabell är yttre sammanfogad, så language_id är NULL när ingen post hittas, men då letar du efter language_id = 2 , men ? language_id är NULL .

Jag ser inte heller var du använder resultat från a_tl eller b_tl , antar att det bara är ett problem med ditt inlägg, inte din ursprungliga fråga?

Använd dock explicita kopplingar istället för den gamla syntaxen. När du är van vid det är det mycket lättare att läsa och förstå.
Din fråga kan också dra nytta av att använda COALESCE (eller NVL om du vill):

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 )

Hoppas jag fick rätt på din fråga, fråga gärna om det inte fungerar.



  1. installera Oracle Instantclient på Linux utan att ställa in miljövariabler?

  2. Välj den högsta lönen

  3. Hur skapar man tabeller med N:M-relation i MySQL?

  4. ALTER TABLE för att lägga till ny kolumn på begränsat diskutrymme