Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить последние 4 записи по дате из каждой категории / 4 сообщений из 4, страница 1 из 1
12.03.2025, 18:10
    #40140342
Nikolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить последние 4 записи по дате из каждой категории
Здравствуйте!

Нужна помощь. Получить последние 4 записи по дате из каждой категория(с каждой категории по 4 записи).

Есть оконные функции но по примерам их использовании не могу разобраться.

Мой пример
Код: SQL
1.
2.
3.
 $last_four_news = R::getAssocRow("SELECT `news_related`.`category_id`,`category`.`title`,`category`.`alias`,`category`.`textcolor`,`news`.`heading`,`news`.`alias`,`news`.`image`,`news`.`excert_content`,`news`.`main_content`,`news`.`published_date`
                                              FROM `news` INNER JOIN `news_related` ON `news_related`.`news_id` = `news`.`id` JOIN `category` ON `category`.`id` = `news_related`.`category_id` WHERE `news_related`.`category_id` IN (1,2,5,7)
                                              ORDER BY `news`.`published_date` DESC");
...
Рейтинг: 0 / 0
12.03.2025, 21:57
    #40140343
чебуран
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить последние 4 записи по дате из каждой категории
через row_number()

делаете
Код: SQL
1.
2.
3.
4.
5.
select * from
(select row_number() over (partition by category order by published_date desc) as rn,
все_остальные_поля
from тоже_самое)
where rn <= 4
...
Рейтинг: 0 / 0
13.03.2025, 16:57
    #40140356
Nikolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить последние 4 записи по дате из каждой категории
чебуран [игнорируется] 

А как это сделать) моим примером?
...
Рейтинг: 0 / 0
13.03.2025, 17:50
    #40140357
чебуран
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить последние 4 записи по дате из каждой категории
Nikolay  13.03.2025, 16:57
[игнорируется]
чебуран [игнорируется] 

А как это сделать) моим примером?
так я написал запрос выше
только не стал все буквы руками переписывать, это слишком дорого

Вам нужно добавить в ваш запрос новое поле

row_number() over (partition by category order by published_date desc) as rn

которое пронумерует все строки в разрезе категории
и потом просто по нему фильтровать
where rn <= 4

единственное что where на результат оконки сразу не будет действовать, и нужно всё в подзапрос обернуть, чтобы where сделать
...
Изменено: 13.03.2025, 17:50 - чебуран
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить последние 4 записи по дате из каждой категории / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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