Mysql
 sql >> Base de données >  >> RDS >> Mysql

La jointure externe gauche ne renvoie pas tous les enregistrements de la table primaire

Votre clause where convertit la jointure externe en une jointure interne.

Les lignes non correspondantes conservées par la outer join auront tous NULL valeurs pour documentation.status donc votre documentation.status != 3 condition les filtrera (Le résultat de l'expression NULL !=3 est unknown pas true ).

Pour éviter ce problème, utilisez

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'  

Notez que le documentation.status != 3 le prédicat est déplacé dans le JOIN état.