SQLinfo.ru - Все о MySQL Highload++ 2017

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.06.2016 13:42:47

wrode_coder
Участник
Зарегистрирован: 10.06.2016
Сообщений: 4

Помогите. Не могу понять почему не работает запрос

Задача стоит такая. Нужно запросиь по три записи из каждой категории. Получился такой запрос

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 стоит

Неактивен

 

#2 10.06.2016 14:31:49

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5269

Re: Помогите. Не могу понять почему не работает запрос

посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=1742&p=2

там есть правильный вариант, но с т.з. производительности лучше сделать несколько запросов, отдельно для каждой категории

Неактивен

 

#3 10.06.2016 14:56:18

wrode_coder
Участник
Зарегистрирован: 10.06.2016
Сообщений: 4

Re: Помогите. Не могу понять почему не работает запрос

Проблема в том, что даже для примера, описанного http://sqlinfo.ru/forum/viewtopic.php?pid=22257#p22257 у меня выдается 0 строк тогда как прмер показывает 3 строки. Может дело в настройке MySQL? Может у меня отключены переменные? Подскажите пжлста

Проверил свой запрос на сервере там таже история, попытался добавить в вывод переменные - онии пустые, хотя вроде как должны их значеня менятся.

Отредактированно wrode_coder (10.06.2016 15:04:47)

Неактивен

 

#4 10.06.2016 15:26:16

wrode_coder
Участник
Зарегистрирован: 10.06.2016
Сообщений: 4

Re: Помогите. Не могу понять почему не работает запрос

Разобрался! Надо обязательно перед отправкой основного поискового запроса отправлять set @i=0, @p=0; А нелзя л как-то объедениить эти два запроса в один?

Отредактированно wrode_coder (10.06.2016 15:26:45)

Неактивен

 

#5 10.06.2016 15:58:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5269

Re: Помогите. Не могу понять почему не работает запрос

можно определив в части from
замените
) as q
на
) as q, (select @i:=0, @p:=0) as x

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson