Как делать join таблицы с самой собой в postgresql?

Пользователь

от nicolette.stoltenberg , в категории: SQL , 8 месяцев назад

Как делать join таблицы с самой собой в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от cloyd , 7 месяцев назад

@nicolette.stoltenberg 

Для объединения таблицы с самой собой в PostgreSQL можно использовать оператор JOIN, указав разные псевдонимы (alias) для каждой копии таблицы.


Например, если у вас есть таблица "orders" с полями "order_id", "customer_id" и "order_date", и вы хотите объединить ее с самой собой, чтобы получить список всех клиентов, которые делали заказы в один и тот же день, можно написать следующий запрос:

1
2
3
4
5
6
7
SELECT 
    o1.customer_id,
    o1.order_date,
    o2.order_id
FROM 
    orders o1
    JOIN orders o2 ON o1.customer_id = o2.customer_id AND o1.order_date = o2.order_date AND o1.order_id <> o2.order_id


В этом запросе мы создаем две копии таблицы "orders", называемые "o1" и "o2". Затем мы присоединяем их, используя оператор JOIN, и указываем условие соединения, которое сравнивает значения полей "customer_id" и "order_date" из обеих таблиц. Важно также указать условие o1.order_id <> o2.order_id, чтобы избежать соединения строк с одним и тем же заказом.


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