Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Lewe sprzężenie zewnętrzne nie zwraca wszystkich rekordów z tabeli podstawowej

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powielanie tabeli, indeksów i danych MySQL

  2. Typ danych notatek programu Microsoft Access do typu danych MySQL

  3. Użyj mysqldump do tworzenia kopii zapasowych MySQL lub MariaDB

  4. Wybierz punkty z bazy danych mapy według promienia

  5. Pobieranie MySQL za pomocą Kivy