Я пытаюсь сделать оператор select, и он работает, за исключением того, что он не ограничивает количество результатов для каждого пользователя (U.id) до 5.
SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image
FROM favorites AS F
INNER JOIN users AS U
ON F.faver_profile_id = U.id
INNER JOIN items AS I
ON F.notice_id = I.id
WHERE faver_profile_id IN ('.$users.')
GROUP BY I.id HAVING COUNT(U.id) <= 5
ORDER BY F.faver_profile_id, F.created DESC
Я группируюсь по I.id, чтобы исключить дубликаты. Из моих исследований кажется, что вы можете использовать HAVING COUNT, если вы также группируете этот столбец, но я не могу группировать U.id или я бы потерял строки результатов.
Вместо HAVING
, можете ли вы нажать LIMIT 5
там?
Изменить: OP не может LIMIT
весь запрос,
и, AFAIK, MySQL не поддерживает LIMIT
в подзапросах,
поэтому вы можете создать временную таблицу с пятью (5) идентификаторами пользователей:
create table temp_table ( id INT );
insert into temp_table (id) SELECT U.id FROM users U LIMIT 5;
SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image
FROM favorites AS F
INNER JOIN temp_table AS Ut
ON F.faver_profile_id = Ut.id
INNER JOIN items AS I
ON F.notice_id = I.id
WHERE faver_profile_id IN ('.$users.')
GROUP BY I.id
ORDER BY F.faver_profile_id, F.created DESC;
drop table temp_Table;
Сообщите нам, как это работает.