MySQL - Doctrine: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055 Выражение # 1 из списка SELECT отсутствует в предложении GROUP BY и содержит - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь написать этот MySQL запрос

http://sqlfiddle.com/#! 9 / e417f3 / 2

SELECT user.name as user, offer.score, course.name as course, city.name as city
FROM offer
INNER JOIN course ON course.id = offer.course_id
INNER JOIN user ON user.id = offer.user_id
INNER JOIN city ON city.id = user.city_id
GROUP BY offer.course_id
ORDER BY offer.score DESC;

in Doctrine

return $this
  ->createQueryBuilder('offer')
  ->select('offer.id')
  ->innerJoin('offer.course', 'course')
  ->innerJoin('offer.tutor', 'user')
  ->innerJoin('user.city', 'city')
  ->groupBy('offer.course')
  ->orderBy('offer.score', 'DESC')
  ->getQuery();

И вернуть эту ошибку:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

Может помочь мне решить ее?

1 Ответ

1 голос
/ 29 января 2020

Пожалуйста, прочитайте больше о в этом руководстве: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

Проблема в том, что ваши столбцы SELECT должны быть объединены при использовании предложения GROUP BY. Поэтому в запросе SELECT вы должны использовать такие функции, как MAX () SUM () ANY_VALUE () - которые могут выполнять ваш запрос, работая даже с включенным ONLY_GROUP_BY (см. mysql руководство) для примеров.

...