powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить последние 4 записи по дате из каждой категории
4 сообщений из 4, страница 1 из 1
Получить последние 4 записи по дате из каждой категории
    #40140342
Nikolay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Нужна помощь. Получить последние 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
Получить последние 4 записи по дате из каждой категории
    #40140343
чебуран
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через 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
Получить последние 4 записи по дате из каждой категории
    #40140356
Nikolay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чебуран [игнорируется] 

А как это сделать) моим примером?
...
Рейтинг: 0 / 0
Получить последние 4 записи по дате из каждой категории
    #40140357
чебуран
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получить последние 4 записи по дате из каждой категории
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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