Mysql
 sql >> база данни >  >> RDS >> Mysql

Кога да използвате ляво външно съединение?

Съединенията се използват за комбиниране на две свързани таблици заедно.

Във вашия пример можете да комбинирате таблицата на служителите и таблицата на отдела, както следва:

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

Това ще доведе до набор от записи като:

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

Използвах INNER JOIN по-горе. INNER JOIN s комбинират две таблици, така че само се показват записи със съвпадения в двете таблици и те са обединени в този случай на номера на отдела (поле DNO в служител, DNUMBER в таблицата на отдел).

LEFT JOIN s ви позволява да комбинирате две таблици, когато имате записи в първата таблица, но може и да не има записи във втората таблица. Например, да приемем, че искате списък на всички служители, плюс всички зависими:

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

Проблемът тук е, че ако един служител не имат зависим, тогава записът им изобщо няма да се покаже -- защото няма съвпадащ запис в таблицата DEPENDENT.

И така, използвате ляво join, който запазва всички данни от "ляво" (т.е. първата таблица) и изтегля всички съвпадащи данни от "дясно" (втората таблица):

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

Сега получаваме всички от досиетата на служителите. Ако няма съвпадащи зависими(и) за даден служител, dependent_first и dependent_last полетата ще бъдат нулеви.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблица само за четене в mysql

  2. Промяна на колона срещу промяна на колона

  3. MYSQL Дата и час, закръглено до най-близкия час

  4. Архивиране на таблица с колона GEOMETRY с помощта на mysqldump?

  5. Локална реплика на RDS база данни