Mysql
 sql >> Database >  >> RDS >> Mysql

Left Outer Join non restituisce tutti i record dalla tabella primaria

La tua clausola where sta riconvertendo il join esterno in uno interno.

Le righe non corrispondenti conservate dall'outer join avranno tutti NULL valori per documentation.status quindi il tuo documentation.status != 3 condizione li filtrerà indietro (il risultato dell'espressione NULL !=3 è unknown non true ).

Per evitare questo problema usa

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'  

Nota che il documentation.status != 3 il predicato viene spostato nel JOIN condizione.