Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Left Outer Join não retornando todos os registros da tabela primária


Sua cláusula where está convertendo a junção externa de volta em uma interna.

As linhas não correspondentes preservadas pela outer join todos terão NULL valores para documentation.status então seu documentation.status != 3 condição irá filtrá-los de volta (O resultado da expressão NULL !=3 é unknown não true ).

Para evitar esse problema, use
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'  

Observe que o documentation.status != 3 o predicado é movido para o JOIN doença.