SQL LEFT JOIN
ЛЕВОЕ СОЕДИНЕНИЕ
SQL LEFT JOIN (задается с помощью ключевых слов LEFT JOIN и ON) объединяет две таблицы и извлекает все совпадающие строки двух таблиц, для которых выполняется выражение SQL, плюс строки из первой таблицы, которые не соответствуют ни одной строке во второй таблице ,
Слева: синтаксис
ВЫБРАТЬ * ИЗ таблицы 1 ВЛЕВО [ВНЕШНИЙ] РЕЙТИНГ table2 ON table1.column_name = table2.column_name;
Наглядное представление:
Соединение 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 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 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.
Пример таблицы: компания
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, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL ПОДПИСИ
- SQL Union [9 упражнений]
- SQL View [16 упражнений]
- Управление учетными записями пользователей SQL [16 упражнение]
- База данных фильмов
- ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Футбольная база
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- База данных больницы
- База данных сотрудников
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
- Еще не все!
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущий: SQL OUTER JOIN
Далее: SQL RIGHT JOIN JOIN
Новый контент: Composer: менеджер зависимостей для PHP , R программирования