Оператор JOIN SQL

SQL join используется для запроса данных из таблиц, связанных между собой по столбцам.

Join и Key

Иногда для получения полных результатов нам нужно получить данные из двух или более таблиц. В этом случае нам нужно выполнить join.

Таблицы в базе данных можно связать между собой с помощью ключей. Основной ключ (Primary Key) - это столбец, в котором каждый значений уникальны. В таблице каждый значений основного ключа уникальны. Цель такой做法 - связать данные между таблицами, не повторяя все данные в каждой таблице.

Далее рассмотрим таблицу "Persons":

Id_P LastName FirstName Адрес Город
1 Adams John Улица Оксфорд Лондон
2 Буш Джордж Пятая авеню Нью-Йорк
3 Carter Thomas Улица Чан'an Пекин

Пожалуйста, обратите внимание, что столбец "Id_P" является主 ключом таблицы "Persons". Это означает, что ни одна строка не может иметь одинаковый Id_P. Даже если имена двух людей полностью идентичны, Id_P может отличить их.

Далее рассмотрим таблицу "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Пожалуйста, обратите внимание, что столбец "Id_O" является主 ключом таблицы "Orders", а столбец "Id_P" в таблице "Orders" используется для ссылки на таблицу "Persons", не требуя использования их точных имен.

Обратите внимание, что "Id_P" столбец связывает два вышеуказанных таблицы.

Ссылка на две таблицы

Мы можем получить данные из двух таблиц, ссылаясь на две таблицы:

Кто заказал продукт и что он заказал?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

Результаты набора:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - использование JOIN

Кроме вышеуказанного метода, мы также можем использовать ключевое слово JOIN для получения данных из двух таблиц.

Если мы хотим перечислить все заказы людей, можно использовать следующую SELECT-фразу:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

Результаты набора:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

Разные SQL JOIN

Кроме INNER JOIN (внутреннее соединение), которое мы использовали в примерах выше, мы можем использовать и другие типы соединений.

Ниже перечислены доступные вам типы JOIN и их различия.

  • JOIN: Возвращает строки, если есть至少 одно соответствие в таблице
  • LEFT JOIN: Возвращает все строки из левой таблицы, даже если нет соответствия в правой таблице
  • RIGHT JOIN: Возвращает все строки из правой таблицы, даже если нет соответствия в левой таблице
  • FULL JOIN: Возвращает строки, если есть соответствие в至少 одной таблице