sql >> Database teknologi >  >> RDS >> Oracle

to venstre ydre joinforbindelse fungerer ikke Oracle sql

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.



  1. Algoritme til at vælge de mest populære steder fra databasen

  2. Doktrin - Hvordan udskriver man den rigtige sql, ikke kun den forberedte erklæring?

  3. SQL QUERY - Hvordan udtrækkes sidste underordnede af en tabel?

  4. Oracle 10g accepterer 5-cifret årstal i en Dato