PostgreSQL FULL OUTER JOIN
Что такое полное внешнее объединение в PostgreSQL?
PostgreSQL FULL OUTER JOIN возвращает все строки из обеих участвующих таблиц, расширенные нулями, если они не совпадают в противоположной таблице. FULL OUTER JOIN объединяет результаты как левого, так и правого внешних объединений и возвращает все (совпадающие или не совпадающие) строки из таблиц с обеих сторон предложения join.
Синтаксис:
ВЫБРАТЬ * | имя_столбца (ы) FROM table_name1 FULL [OUTER] РЕЙТИНГ table_name2 ON table_name1.column_name = table_name2.column_name
Иллюстрированная презентация полного внешнего соединения PostgreSQL
PostgreSQL FULL OUTER JOIN выбирает совпадающие строки из таблиц (table1 и table2), участвующих в этом соединении, а также строки с нулем, если они не совпадают в противоположной таблице.
Образец таблицы: клиент
Образец таблицы: пункт
Образец таблицы: Счет
Пример:
Код:
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM invoice
FULL JOIN item
ON invoice.item_no=item.item_no
ORDER BY item_no;
ИЛИ ЖЕ
Код:
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM invoice
FULL OUTER JOIN item
ON invoice.item_no=item.item_no
ORDER BY item_no;
Выход:
объяснение
В вышеприведенном примере появились совпадающие строки как элемента таблицы, так и счета-фактуры, а также появилась несопоставленная строка, т.е. I8 таблицы элементов, которой нет в таблице счетов-фактур, и для этой строки таблицы элементов новый Строка в таблице счетов-фактур сгенерирована и устанавливает значение NULL.
Наглядная презентация для приведенного выше примера
Альтернативный оператор для этого примера: использование предложения UNION
Код:
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM invoice
LEFT JOIN item
ON invoice.item_no=item.item_no
UNION
SELECT item.item_no,item_descrip,
invoice.invoice_no,invoice.sold_qty
FROM invoice
RIGHT JOIN item
ON invoice.item_no=item.item_no
ORDER BY item_no;
Предыдущий: RIGHT JOIN
Далее: ПОДПИСКИ
Новый контент: Composer: менеджер зависимостей для PHP , R программирования