@Justings

Ошибка в mysql а именно если есть count(uid) то дополнительные поля не прописать, как решить избегая доп запросов?

Есть запрос вида:
$top = $db_link->query("SELECT count(uid) as co FROM table WHERE 1=1 GROUP BY uid ORDER BY co DESC LIMIT 10");
while ($res = $top->fetch_array()) {
/*тут вывод, все дела*/
}

Он работает отлично, но если я добавлю любое поле например name рядом с count()
$top = $db_link->query("SELECT name, count(uid) as co FROM table WHERE 1=1 GROUP BY uid ORDER BY co DESC LIMIT 10");
while ($res = $top->fetch_array()) {
echo $res['name'];
}

то выдает сразу ошибку и ничего не работает, на сколько мне помнится, вроде не должно быть ошибок, а мне выдает по факту пустоту и Call to a member function fetch_array() on boolean
Заранее спасибо за помощь!
  • Вопрос задан
  • 33 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Начиная с версии 5.7.5 MySQL реализует стандартное поведение группировок.
В запросах с группировкой все выбираемые поля должны быть либо полями, по которым идёт группировка (у вас - uid), либо агрегатными функциями (у вас - count).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы