2016-04-12 6 views
1

EDIT: Как оказалось, кажется, что код работает так, как предполагалось. Это была просто проблема отладки. Извините за беспокойство!Mysql FOUND_ROWS с заявлением HAVING

Я запускаю большой запрос, который включает в себя несколько фильтров и JOINs, а также я разбиваю страницы на результаты, поэтому запрос выполнялся дважды.

Я попытался использовать 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)

+0

Что вы пытаетесь получить от 'LEFT JOIN' здесь? –

+0

это был просто пример SQL в реальном SQL. У меня есть намного больше выбранных строк, некоторые из профиля. Так или иначе, это было плохо. Код был запущен, как предполагалось, – user982962

+1

, вы даже не можете написать свойство вопроса, и вы ожидаете, что люди поймут вашу проблему и помогут вам в этом. Ты самый худший из всех людей! – ant

ответ

0

Как оказалось, кажется, что код работает так, как предполагалось. Это была просто проблема отладки. Извините за беспокойство!