Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Left Outer Join gibt nicht alle Datensätze aus der Primärtabelle zurück

Ihre where-Klausel wandelt den äußeren Join wieder in einen inneren um.

Die nicht übereinstimmenden Zeilen, die vom outer join beibehalten werden haben alle NULL Werte für documentation.status also Ihr documentation.status != 3 Bedingung filtert diese wieder heraus (Das Ergebnis des Ausdrucks NULL !=3 ist unknown nicht true ).

Um dieses Problem zu vermeiden, verwenden Sie

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'  

Beachten Sie, dass documentation.status != 3 Prädikat wird in den JOIN verschoben Zustand.