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

Kiedy używać lewego sprzężenia zewnętrznego?

Połączenia służą do łączenia ze sobą dwóch powiązanych tabel.

W swoim przykładzie możesz połączyć tabelę Employee i tabelę Department, w następujący sposób:

SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER

Spowodowałoby to zestaw rekordów taki jak:

FNAME   LNAME   DNAME
-----   -----   -----
John    Smith   Research
John    Doe     Administration

Użyłem INNER JOIN nad. INNER JOIN s połączyć dwie tabele tak, aby tylko wyświetlane są rekordy z dopasowaniami w obu tabelach i są one łączone w tym przypadku na numer działu (pole DNO w Employee, DNUMBER w tabeli Department).

LEFT JOIN pozwalają łączyć dwie tabele, gdy masz rekordy w pierwszej tabeli, ale może nie mają rekordy w drugiej tabeli. Załóżmy na przykład, że chcesz otrzymać listę wszystkich pracowników oraz osób na utrzymaniu:

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

Problem polega na tym, że jeśli pracownik nie mają zależny, wtedy ich rekord w ogóle się nie pojawi -- ponieważ nie ma pasującego rekordu w tabeli DEPENDENT.

Używasz więc lewego join, które zachowuje wszystkie dane po „lewej” (tj. pierwszej tabeli) i pobiera pasujące dane „po prawej” (druga tabela):

SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN

Teraz otrzymujemy wszystkie ewidencji pracowników. Jeśli nie ma pasujących osób na utrzymaniu dla danego pracownika, dependent_first i dependent_last pola będą puste.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utworzyć kopię zapasową tabeli z kolumną GEOMETRY za pomocą mysqldump?

  2. Docker-compose sprawdza, czy połączenie mysql jest gotowe

  3. Jak połączyć dwa stoły i porównać je? (Pytałem kilka razy, ale nie mogłem znaleźć odpowiedzi.)

  4. MySQL :pobierz duży wybór porcjami

  5. Kod błędu:1822, gdy typy danych są zgodne, z kluczem złożonym