FULL JOIN в PostgreSQL: полное соединение таблиц

FULL JOIN в PostgreSQL объединяет строки из двух таблиц, включая все записи из обеих таблиц. Если в одной из таблиц нет соответствующего значения, в результатах будут NULL.

Использование FULL JOIN

Объединение таблиц users и orders, включая все записи из обеих таблиц:

SELECT users.id, users.name, orders.id AS order_id, orders.total
FROM users
FULL JOIN orders ON users.id = orders.user_id;

Этот запрос вернет всех пользователей и все заказы, даже если у пользователя нет заказа или у заказа нет пользователя.

Фильтрация результатов

Выбор записей, которые не имеют соответствий в другой таблице:

SELECT users.id, users.name, orders.id AS order_id, orders.total
FROM users
FULL JOIN orders ON users.id = orders.user_id
WHERE users.id IS NULL OR orders.id IS NULL;

Объединение нескольких таблиц

Пример соединения трех таблиц: users, orders и products, включая все записи:

SELECT users.name, orders.id AS order_id, products.name AS product_name
FROM users
FULL JOIN orders ON users.id = orders.user_id
FULL JOIN products ON orders.product_id = products.id;

Этот запрос вернет всех пользователей, их заказы (если есть) и соответствующие товары.