Det ser ud til, at problemet er, at du ikke bruger (+)
for dit language_id
kontroller.
Din tabel er ydre sammenføjet, så language_id
er NULL
når der ikke findes nogen post, men så tjekker du efter language_id = 2
, men ? language_id
er NULL
.
Jeg kan heller ikke se, hvor du bruger resultater fra a_tl
eller b_tl
, tror det bare er et problem med dit indlæg, ikke din oprindelige forespørgsel?
Brug dog eksplicitte joinforbindelser i stedet for den gamle syntaks. Når du er vant til det, er det meget nemmere at læse og forstå.
Din forespørgsel kan også drage fordel af at bruge COALESCE
(eller NVL
hvis du vil):
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 )
Håber jeg har forstået dit spørgsmål rigtigt, spørg venligst hvis det ikke virker.