кодесурса
«SQL

SQL LEFT JOIN

script1adsense2code
script1adsense3code

ЛЕВОЕ СОЕДИНЕНИЕ

SQL LEFT JOIN (задается с помощью ключевых слов LEFT JOIN и ON) объединяет две таблицы и извлекает все совпадающие строки двух таблиц, для которых выполняется выражение SQL, плюс строки из первой таблицы, которые не соответствуют ни одной строке во второй таблице ,

Слева: синтаксис

 ВЫБРАТЬ *
ИЗ таблицы 1
ВЛЕВО [ВНЕШНИЙ] РЕЙТИНГ table2
ON table1.column_name = table2.column_name;

Наглядное представление:

«Sql

Соединение SQL LEFT извлекает полный набор записей из таблицы 1 с соответствующими записями (в зависимости от доступности) в таблице 2. Результат - NULL в правой части, когда сопоставление не будет.

Синтаксическая диаграмма - LEFT JOIN


Пример SQL левого соединения

Чтобы получить столбцы названия компании и идентификатора компании из таблицы компании и идентификатора компании, имени элемента, столбцов единиц товара из таблицы продуктов, после ВНЕШНЕГО СОЕДИНЕНИЯ с этими упомянутыми таблицами можно использовать следующий оператор SQL:

Пример таблицы: продукты


Пример таблицы: компания


Код SQL:

SELECT company.company_id,company.company_name,
company.company_city,foods.company_id,foods.item_name
FROM   company
LEFT JOIN foods
ON company.company_id = foods.company_id;

Объяснение:

Этот оператор SQL будет возвращать все строки из таблицы компании и только те строки из таблицы продуктов, где объединенные поля равны, и если предложение ON не соответствует ни одной записи в таблице «продукты», соединение все равно будет возвращать строки, но NULL в каждом столбце правой таблицы.

Выход:

 COMPANY_ID COMPANY_NAME COMPANY_CITY COMPANY_ID ITEM_NAME
---------- ------------------------- --------------- ---------- ---------- --------------
16 Akas Foods Delhi 16 Chex Mix
15 Jack Hill Ltd Лондон 15 Cheez-It
15 Jack Hill Ltd London 15 BN Бисквит
17 гурманов. Лондон 17 Могучий Мунк
15 Jack Hill Ltd London 15 Пот Райс
18 Заказать все Бостон 18 Яффских тортов
19 глотков Нью-Йорк

Наглядная презентация приведенного выше примера:

«SQL

Пример SQL Left Join с использованием нескольких столбцов

Чтобы отфильтровать номер счета, наименование товара и сумму счета для каждого счета, сумма счета которого превышает значение 500 и должна быть доступна на прилавке с продуктами, можно использовать следующий оператор SQL:

Пример таблицы: продукты


Пример таблицы: counter_sale


Код SQL:


SELECT a.bill_no, b.item_name, a.bill_amt 
FROM counter_sale a 
LEFT JOIN foods b 
ON a.item_id=b.item_id 
WHERE  a.bill_amt>500;

Объяснение:

Этот оператор SQL сначала объединит все строки из таблицы counter_sale и только те строки из таблицы Foods, в которых объединенные поля равны, и если предложение ON не соответствует ни одной записи в таблице Food, соединение все равно будет возвращать строки, но NULL в поэтому в каждом столбце правой таблицы удаляются те строки, сумма счета которых меньше или равна 500.

Выход:

 BILL_NO ITEM_NAME BILL_AMT
---------- ------------------------- ----------
      1002 Chex Mix 2000
      1006 Могучий Мунк 625
      1001 горшок с рисом 600
      1004 горшок с рисом 540
      1005 Соль и Шейк 600

Иллюстрированная презентация:

«SQL

Пример SQL Left Join с использованием нескольких таблиц

Чтобы отфильтровать этот номер счета, название товара, название компании и город, а также сумму счета для каждого счета, какие продукты доступны в таблице продуктов питания, и их производитель должен был заручиться поддержкой для поставки этого продукта, и никакое значение NULL для производителя не допускается. можно использовать следующий оператор SQL:

Пример таблицы: продукты


Пример таблицы: компания


Пример таблицы: counter_sale


Код SQL:

SELECT a.bill_no, b.item_name,c.company_name, 
c.company_city, a.bill_amt 
FROM counter_sale a 
LEFT JOIN foods b ON a.item_id=b.item_id 
LEFT JOIN company c ON b.company_id=c.company_id
WHERE c.company_name IS NOT NULL
ORDER BY a.bill_no;

Объяснение:

Этот оператор SQL сначала объединит все строки из таблицы counter_sale и только те строки из таблицы пищевых продуктов, в которых совпадают соединенные поля, и если предложение ON не соответствует ни одной записи в таблице пищевых продуктов, соединение все равно будет возвращать строки, но NULL в каждый столбец правой таблицы. Следовательно, этот результат объединится с таблицей компании, и все строки из таблицы результатов, а также совпадающие и несопоставленные строки из таблицы компании также будут получены, но для несопоставленных строк таблицы компании значение столбца будет равно NULL. Следовательно, предложение WHERE удаляет те строки, для которых значение столбца с именем компании равно NULL, а после этого предложение ORDER BY упорядочивает строки в порядке возрастания в соответствии с номером счета.

Выход:

 BILL_NO ITEM_NAME COMPANY_NAME COMPANY_CITY BILL_AMT
---------- ------------------------- --------------- ---------- ------------------------- ----------
      1001 Пот Райс Джек Хилл Лтд. Лондон 600
      1002 Chex Mix Akas Foods Дели 2000
      1003 Cheez-It Jack Hill Ltd Лондон 300
      1004 Пот Райс Джек Хилл Лтд. Лондон 540
      1006 Могущественных гурманов Мунка. Лондон 625

Иллюстрированная презентация:

«SQL

В чем разница между левым соединением и левым внешним соединением в SQL?

На самом деле нет разницы между левым соединением и левым внешним соединением - оба они относятся к аналогичной операции в SQL.

Пример таблицы: компания

 COMPANY_ID COMPANY_NAME COMPANY_CITY
---------- ------------------------- -------------
18 Заказать все Бостон
15 Jack Hill Ltd Лондон
16 Akas Foods Delhi
17 гурманов. Лондон
19 глотков Нью-Йорк

Пример таблицы: продукты

 ITEM_ID ITEM_NAME ITEM_UNIT COMPANY_ID
-------- ------------------------- ---------- ------- ---
1 Chex Mix шт 16
6 Cheez-It PC 15
2 BN бисквитные шт 15
3 Могучий Мунк ПК 17
4 Горшок с рисом шт 15
5 Яффских пирогов, шт 18
7 соленых коктейлей шт

Важно отметить, что в самой последней строке таблицы компании идентификатор компании не существует в таблице продуктов. Кроме того, в самой последней строке таблицы продуктов значение идентификатора компании равно NULL и не существует в таблице компании. Эти факты окажутся значимыми для левого объединения.

Здесь оператор SQL без использования «external» с «left join».

Код SQL:

SELECT company.company_id,company.company_name,
foods.item_id, foods.item_name, foods.company_id 
FROM company 
LEFT JOIN foods 
ON company.company_id = foods.company_id;

Запуск SQL с ключевым словом «external» даст нам те же результаты, что и запуск SQL без «external». Здесь оператор SQL с «внешним» с «левым соединением».

Код SQL:

SELECT company.company_id,company.company_name,
foods.item_id, foods.item_name, foods.company_id 
FROM company 
LEFT OUTER JOIN foods 
ON company.company_id = foods.company_id;

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

Выход:

 COMPANY_ID COMPANY_NAME ITEM_ID ITEM_NAME COMPANY_ID
---------- ------------------------- -------- ------- ------------------ ----------
16 Akas Foods 1 Chex Mix 16
15 Jack Hill Ltd 6 Cheez-It 15
15 Jack Hill Ltd 2 BN Бисквит 15
17 гурманов. 3 Могучий Мунк 17
15 Джек Хилл Лтд 4 Горшок Райс 15
18 Заказать все 5 Jaffa Cakes 18
19 глотков NULL NULL NULL

Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.

LEFT JOIN: реляционные базы данных

Ключевые моменты для запоминания :

Нажмите на следующее, чтобы получить презентацию слайдов -

«SQL

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: SQL OUTER JOIN
Далее: SQL RIGHT JOIN JOIN

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code