У меня есть этот запрос:Ограничить запрос для каждой группы
select pl.photo_id, pl.user_id, pl.liker_id, p1.filename user_filename, p2.filename liker_filename
FROM photo_likes pl
left join photos p1 on (pl.photo_id = p1.photo_id)
left join photos p2 on (pl.liker_id = p2.user_id and p2.avatar = 1)
where pl.user_id = $id order by pl.liker_id, pl.date_liked desc
Он получает правильные данные, но я хотел бы изменить его, чтобы ограничить данные. Итак, в ореховой оболочке этот запрос получит все понравившиеся от всех людей, которым понравилась их фотография, она отлично работает, это может захватить много фотографий для каждого человека. Но я хочу, чтобы ограничить его, чтобы получить только 5 от каждого человека:
Так, скажем user A
любит 10 моих фотографий, user B
любит 8 из моих фотографий, и user C
любит 2 из моих фотографий, я хочу только последние 5 из user A
, последние 5 от user B
и последние 2 от user C
. Если это имеет смысл, как это можно сделать?
я снял с запятой в строке 4, и я получаю результаты обратно, но я я не получаю все строки. первый возвращает 3 строки, когда он должен возвращать 5 строк, а второй возвращает 2 строки, которые являются правильными. –
@RyanNaddy, удалите часть запроса «HAVING» и посмотрите ВСЕ, что он вернется обратно ... Ваш уже самый внутренний запрос уже имел данные на основе LIKER ID FIRST, а затем спускает дату. Итак, если есть что-то неправильное , посмотрите на необработанные данные и проверьте их значения на «Seq» и последнем значении «Liker» в каждой строке, чтобы убедиться, что они имеют смысл ... – DRapp
Без наличия я получаю все данные. добавив его, он удаляет Seq '2' и' 4' от первого пользователя, но затем изменяет '2' на' 3' для второго пользователя. Я получу несколько скриншотов –