Задавайте вопросы, мы ответим
Вы не зашли.
Задача стоит такая. Нужно запросиь по три записи из каждой категории. Получился такой запрос
SELECT q.* FROM
(
SELECT
c.name as s_name, r.*
FROM `category` as c
JOIN `record` as r ON (r.target=c.id AND c.active)
WHERE c.parent = 7
ORDER BY c.pos
) as q
WHERE IF(@p=q.`target`, @i:=@i+1,(@i:=0) or (@p:=q.`target`) ) and @i < 3
и вроде как этот запрос должен выводить не более 3 записей (`record`) из каждой категории (`category`). Однако выводится все записи каждой категории. Что не так не пойму. MySQL версии 5.5 стоит
Неактивен
посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=1742&p=2
там есть правильный вариант, но с т.з. производительности лучше сделать несколько запросов, отдельно для каждой категории
Неактивен
Проблема в том, что даже для примера, описанного http://sqlinfo.ru/forum/viewtopic.php?pid=22257#p22257 у меня выдается 0 строк тогда как прмер показывает 3 строки. Может дело в настройке MySQL? Может у меня отключены переменные? Подскажите пжлста
Проверил свой запрос на сервере там таже история, попытался добавить в вывод переменные - онии пустые, хотя вроде как должны их значеня менятся.
Отредактированно wrode_coder (10.06.2016 15:04:47)
Неактивен
Разобрался! Надо обязательно перед отправкой основного поискового запроса отправлять set @i=0, @p=0; А нелзя л как-то объедениить эти два запроса в один?
Отредактированно wrode_coder (10.06.2016 15:26:45)
Неактивен
можно определив в части from
замените
) as q
на
) as q, (select @i:=0, @p:=0) as x
Неактивен