После того, как поставил в запрос COUNT(*) as count, началась выводиться только 1 запись, хотя $data['count'] показывает, что их 3. Если же убрать COUNT(*) as count, то всё станет нормально, будут выводиться 3 записи, а не 1.
В чём может быть проблема?
$query = $db->query("
SELECT COUNT(*) as count, support_questions.id ...
FROM `table`
INNER JOIN ...
");
while($data = $db->fetch($query)) {
echo $data['id']
}
Если нет группировки (GROUP BY), то весь набор считается одной группой, и, соответственно, вы получите одну строку. Вам стоит почитать о группировке.
Это не проблема, а нормальное поведение.
Ознакомьтесь с использованием агрегатных функций например здесь:
http://www.sql.ru/docs/sql/u_sql/ch6.shtml
Если в выборке использована агрегатная функция, то возвращается одна строка, если при этом использовано GROUP BY то возвращается несколько строк.
Если я правильно понял вопрос, вы хотите сделать выборку, ограниченную лимитом, и при этом посчитать количество записей вообще. В MySQL можно сделать так:
SELECT SQL_CALC_FOUND_ROWS support_questions.id
...
и после этого выполнить второй запрос:
SELECT FOUND_ROWS();
См. детальное описание опции.
Если простыми словами, то добавление count(*) схлопывает (агрегирует) все строки результата в одну. Вместо них выдаётся количество исходных строк
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости