ЛЕВОЕ и ПРАВОЕ ПРИСОЕДИНЕНИЕ
ЛЕВОЕ СОЕДИНЕНИЕ
LEFT JOIN, также известный как LEFT OUTER JOIN, — это тип операции SQL, которая сохраняет все строки из левой (или первой) таблицы в запросе, независимо от того, есть ли соответствующая строка в правой (или второй) таблице.
При обнаружении совпадения столбцы из правой таблицы заполняются соответствующими значениями. Однако если совпадения не существует, результат содержит значения NULL в столбцах, исходящих из правой таблицы.
Это соединение полезно, если необходимо создать полный список из одной таблицы при добавлении связанных данных из другого, даже если такие связи неполны или отсутствуют.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
SQL-запрос с помощью LEFT JOIN извлекает всех клиентов из sales.customers таблицы, включая те, которые не соответствуют заказам в sales.orders таблице. Предложение ON указывает, что customer_id поле связывает две таблицы.
Для клиентов, которые разместили заказы, order_id из таблицы orders отображается. Однако если у клиента нет заказов, клиент все равно включен в результат, при этом в столбце order_id отображаются значения null.
ПРАВОЕ ПРИСОЕДИНЕНИЕ
RIGHT JOIN, также известная как RIGHT OUTER JOIN, — это операция SQL, которая гарантирует, что все строки из правой (или второй) таблицы включены в результат, независимо от того, есть ли соответствующая строка в левой (или первой) таблице.
В случаях, когда совпадение не найдено, столбцы из левой таблицы отображают значения NULL.
Этот тип соединения обычно используется для фокусировки данных в правой таблице, а также добавления сведений из левой таблицы, где существуют связи.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Этот запрос извлекает все строки из sales.orders таблицы, обеспечивая включение каждого заказа в результат, даже если в таблице нет связанной sales.customers записи.
Предложение ON указывает связь между двумя таблицами через customer_id столбец. Если у заказа есть соответствующий клиент, столбец customer_name заполняется customer_name, а для записей, не имеющих соответствия, отображаются значения NULL.