РЕДАКТИРОВАТЬ: Как оказалось, кажется, что код работает как задумано. Это была просто проблема отладки. Извините за беспокойство!
Я выполняю большой запрос, включающий несколько фильтров и JOIN, а также разбиваю на страницы результаты, поэтому запрос выполнялся дважды.
Я пытался с помощью SQL_CALC_FOUND_ROWS
чтобы избежать выполнения запроса дважды, но так как я фильтрую с HAVING
Заявления я получаю нефильтрованную сумму, перед «имеющим заявление». Мне нужно запустить HAVING
так как исходный запрос основан на подсчете материала — я знаю, что это ужасно, но у меня нет прав на изменение структуры БД прямо сейчас.
Идея моего SQL:
SELECT SQL_CALC_FOUND_ROWS u.id as user_id,
u.full_name as full_name,
u.email as email,
COUNT(stuff) as logs,
FROM
user u
LEFT JOIN
profile u_p on u_p.user_id = u.id
GROUP BY u.id
HAVING logs>5
LIMIT 15
когда я запускаю новый запрос SQL
SELECT FOUND_ROWS() as total_rows
Я получаю полную сумму u.id
Ряды а не отфильтрованные. (Это происходит только с HAVING
заявление, а не WHERE
оговорка)
Как оказалось, похоже, что код работает как задумано. Это была просто проблема отладки. Извините за беспокойство!
Других решений пока нет …