Twoja klauzula where przekształca zewnętrzne sprzężenie z powrotem w wewnętrzne.
Niepasujące wiersze zachowane przez outer join
wszystkie będą miały NULL
wartości dla documentation.status
więc twoja documentation.status != 3
warunek odfiltruje je z powrotem (wynik wyrażenia NULL !=3
jest unknown
nie true
).
Aby uniknąć tego problemu, użyj
select documentation_reference.ref_docnumber,
documentation.filename
from documentation_reference
left outer join documentation
on ref_docnumber = documentation.docnumber
and documentation.status != 3
where documentation_reference.docnumber = 'TP-036'
Zauważ, że documentation.status != 3
predykat jest przeniesiony do JOIN
stan.