Сделать JOIN с подстановкой данных по времени
Есть две таблицы orders
и prices
Orders
CREATE TABLE orders (
count integer not null,
created_at timestamp with time zone not null,
product_id integer not null
);
Prices
CREATE TABLE prices (
retail integer not null,
discount integer not null,
created_at timestamp with time zone not null,
product_id integer not null
);
Необходимо сделать выборку количества заказов по определенному товару product_id
и в определенный период времени, но еще сделать JOIN с таблицей цен prices
так, чтобы цены соответствовали по времени этих заказов.
Пример данных:
orders
count | created_at | product_id |
---|---|---|
1 | 2023-01-10 10:00:00 | 100 |
3 | 2023-01-10 12:00:00 | 100 |
2 | 2023-01-10 14:00:00 | 100 |
4 | 2023-01-10 16:00:00 | 100 |
1 | 2023-01-10 18:00:00 | 100 |
prices
retail | discount | created_at | product_id |
---|---|---|---|
1050 | 5 | 2023-01-10 8:00:00 | 100 |
990 | 10 | 2023-01-10 11:00:00 | 100 |
1100 | 0 | 2023-01-10 13:00:00 | 100 |
1200 | 15 | 2023-01-10 14:35:00 | 100 |
990 | 3 | 2023-01-10 17:40:00 | 100 |
В результате хочу получить список заказов с ценой:
count | retail | discount | created_at | product_id |
---|---|---|---|---|
1 | 1050 | 5 | 2023-01-10 10:00:00 | 100 |
3 | 990 | 10 | 2023-01-10 12:00:00 | 100 |
2 | 1100 | 0 | 2023-01-10 14:00:00 | 100 |
4 | 1200 | 15 | 2023-01-10 16:00:00 | 100 |
1 | 990 | 3 | 2023-01-10 18:00:00 | 100 |
Пытаюсь подобрать правильное условие для JOIN, но пока неудачно. Наверное JOIN тут и не нужен. Надеюсь на вашу помощь.
Источник: Stack Overflow на русском