Есть две табицы: category и news. Нужно сделать выборку чтобы показывало 5 новостей каждой категори. Этот запос показывает все новости.
SELECT category.category, news.title FROM category, news WHERE news.category_id=category.id
А нужно: чтобы на сайте выводилось в таком поряде. пример:
Категория1
новость 1
новость 3
Категория 2
новость 1
set @rank = 0;
set @cursec = -1;
select * from (
select s.name sname, e.name ename,
(IF (@cursec != s.id,(@rank := 1),(@rank := @rank + 1))) RANK,
@cursec := s.id CURSEC
from sect s
left join elem e on e.sec = s.id
order by s.id,e.id
) T where rank <= 2;
Одним запросом не получится.
Первым запросом выбираете категории, запоминаете их в список.
Потом идете циклом по этому списку и выбираете новости данной категории с добавлением к запросу LIMIT 5
. Это ограничит выборку 5 новостями. По какому принципу вы их будете сортировать - дело ваше.
Выводите это всё на страницу.
Выберите все категории и новости в нужном порядке, оберните результат в подзапрос, добавьте к нему счётчик и пронумеруйте новости отдельно для каждой категории, а затем просто оставьте нужные вам.
Пример для LIMIT 2
(меняйте по своему усмотрению на 5 или любой другой):
SELECT
t.*,
@newsNum := IF(t.id != @prevCatId, 1, @newsNum + 1) n,
@prevCatId := t.id
FROM (
SELECT c.id, c.category, n.title
FROM _category c
INNER JOIN _news n ON n.category_id = c.id
ORDER BY c.id, n.id
) t
INNER JOIN (SELECT @prevCatId := 0, @newsNum := 0) counters
HAVING n < 3;
Результат (лишние поля скрыл):
1 sport news 1.1
1 sport news 1.2
2 cinema news 2.1
2 cinema news 2.2
3 music news 3.1
3 music news 3.2
Для отладки использовал такие временные таблицы:
CREATE TEMPORARY TABLE _category(id int, category char(8))
SELECT 1 id, 'sport' category UNION
SELECT 2 id, 'cinema' category UNION
SELECT 3 id, 'music' category
;
CREATE TEMPORARY TABLE _news(id int, category_id int, title char(16))
SELECT 1 id, 1 category_id, 'news 1.1' title UNION
SELECT 2 id, 1 category_id, 'news 1.2' title UNION
SELECT 3 id, 1 category_id, 'news 1.3' title UNION
SELECT 4 id, 2 category_id, 'news 2.1' title UNION
SELECT 5 id, 2 category_id, 'news 2.2' title UNION
SELECT 6 id, 2 category_id, 'news 2.3' title UNION
SELECT 7 id, 3 category_id, 'news 3.1' title UNION
SELECT 8 id, 3 category_id, 'news 3.2' title UNION
SELECT 9 id, 3 category_id, 'news 3.3' title
;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаясь делать курсач застрял вот на таком моменте: Вот скрин кансоли на каком месте остановилась прога: А делаю я решение системы линейных...
Есть такой кодВ данном случае я вручную создаю каждую ячейку,заполняю ее и вставляю в ряд