powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Группировка по полю и сортировка по полю другого
5 сообщений из 5, страница 1 из 1
Группировка по полю и сортировка по полю другого
    #39885375
MichaelKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Проблема состоит в следующем:
Есть таблица Order (Заказ) со столбцом Customer_ID, со ссылкой на другую таблицу Customer.
Нужно для каждого Customer'а выводить информацию только из последнего Order_ID, соответствующего данному customer'у.
Время создания заказа можно определить по столбцу o.create_ts
Иначе запрос:
Код: plsql
1.
2.
3.
select c.id, c.name, o.price, o.name
from Customer c
inner join Order o on o.customer_id = c.id


Такой запрос для каждого кастомера выдает все заказы, ссылающееся на него. Как перед выводом забирать только последний по времени create_ts заказ для каждого кастомера?
Пробовал различные вариации с group by и order by - к сожалению ничего.
...
Рейтинг: 0 / 0
Группировка по полю и сортировка по полю другого
    #39885380
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelKr,

Код: sql
1.
2.
select ... from Customer c
join lateral (select .. from  Order o where o.customer_id = c.id order by create_ts desc limit 1) on true
...
Рейтинг: 0 / 0
Группировка по полю и сортировка по полю другого
    #39885383
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelKr
Добрый день!
Проблема состоит в следующем:
Есть таблица Order (Заказ) со столбцом Customer_ID, со ссылкой на другую таблицу Customer.
Нужно для каждого Customer'а выводить информацию только из последнего Order_ID, соответствующего данному customer'у.
Время создания заказа можно определить по столбцу o.create_ts
Иначе запрос:
Код: plsql
1.
2.
3.
select c.id, c.name, o.price, o.name
from Customer c
inner join Order o on o.customer_id = c.id


Такой запрос для каждого кастомера выдает все заказы, ссылающееся на него. Как перед выводом забирать только последний по времени create_ts заказ для каждого кастомера?
Пробовал различные вариации с group by и order by - к сожалению ничего.


select distinct on c.id c.id, c.name, o.price, o.name
from Customer c
inner join Order o on o.customer_id = c.id
order by c.id, o.create_ts DESC;

как второй вариант...
что будет быстрее distinct on или lateral - сильно зависит от соотношения размеров таблиц и наличных индексов.
...
Рейтинг: 0 / 0
Группировка по полю и сортировка по полю другого
    #39885388
MichaelKr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Есть еще один нюанс, этот запрос мне скорее всего нужно будет реализовать на JPQL, а там не работает limit..
Попробую Ваш вариант
...
Рейтинг: 0 / 0
Группировка по полю и сортировка по полю другого
    #39885395
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelKr
Maxim Boguk,
Есть еще один нюанс, этот запрос мне скорее всего нужно будет реализовать на JPQL, а там не работает limit..
Попробую Ваш вариант


тогда и distinct ON скорее всего не будет работать...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Группировка по полю и сортировка по полю другого
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]