PostgreSQL ЛЕВОЕ СОЕДИНЕНИЕ или ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Что такое левостороннее или левостороннее соединение PostgreSQL?
PostgreSQL LEFT JOIN объединяет две таблицы и выбирает строки на основе условия, которое совпадает в обеих таблицах, и несопоставленные строки также будут доступны из таблицы, написанной до предложения JOIN.
Предположим: table1 LEFT JOIN table2 СОСТОЯНИЕ СОЕДИНЕНИЯ
В PostgreSQL LEFT JOIN таблица table2 зависит от таблицы table1 и всех таблиц, от которых зависит table1, а также table table1 зависит от всех таблиц, которые используются в условии LEFT JOIN, кроме table2. Условие LEFT JOIN используется для определения способа извлечения строк из таблицы table2.
Если в таблице table1 есть строка, соответствующая условию WHERE, но в таблице table2 нет строки, соответствующей условию ON, создается дополнительная строка table2, в которой для всех столбцов установлено значение NULL.
Итак, в случае LEFT JOIN или LEFT OUTER JOIN, PostgreSQL -
1. берет все выбранные значения из левой таблицы
2. объединяет их с именами столбцов (указанными в условии) из правой таблицы
3. получить соответствующие строки из обеих связанных таблиц.
4. устанавливает значение каждого столбца из правой таблицы в NULL, что не соответствует левой таблице.
Синтаксис:
Выбрать * ИЗ таблицы 1 ВЛЕВО [ВНЕШНИЙ] РЕЙТИНГ table2 ON table1.column_name = table2.column_name;
Иллюстрированная презентация PostgreSQL Left Join или Left Outer Join
Соединение PostgreSQL LEFT извлекает полный набор записей слева, с соответствующими записями (в зависимости от доступности) справа. Результат - NULL в правой части, когда сопоставление не будет.
Образец таблицы: Заказчик :
Образец таблицы: пункт :
Пример таблицы: Счет-фактура :
Пример:
Код:
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM item
LEFT JOIN invoice
ON item.item_no=invoice.item_no;
ИЛИ ЖЕ
Код:
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM item
LEFT OUTER JOIN invoice
ON item.item_no=invoice.item_no;
Выход:
Пояснение:
В приведенном выше примере item_no I8 таблицы элементов не существует в таблице счетов-фактур, и для этих строк таблицы элементов сгенерирована новая строка в таблице счетов-фактур, и для этой строки устанавливается значение NULL.
Наглядная презентация для приведенного выше примера
Предыдущая: ВНУТРЕННЯЯ РЕШЕНИЕ
Далее: ПРАВИЛЬНОЕ СОЕДИНЕНИЕ
Новый контент: Composer: менеджер зависимостей для PHP , R программирования