Необходимо полностью просмотреть это приложение. Это содержит много шаблонов и лучших методов, которые необходимо применить.
Проверьте тип сопоставления каждой таблицы и убедитесь, что они имеют одинаковое сопоставление.
После этого проверьте также тип сопоставления каждого поля таблицы, которое вы используете в работе.
Я столкнулся с той же ошибкой, и эти уловки со мной работают.
Убедитесь, что ваша версия MySQL поддерживает подзапросы (4.1+). Затем вы можете попробовать переписать свой запрос примерно так:
SELECT ratings.username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount FROM ratings, users
WHERE ratings.month='Aug' and ratings.username = users.username
AND users.gender = 1
GROUP BY ratings.username
HAVING TheCount > 4 ORDER BY TheAverage DESC, TheCount DESC
HAvING TheCount > 4 AND username IN (SELECT username FROM users WHERE gender=1)
, но почему я отвечаю, вы не проголосовали за мой правильный ответ :)
SELECT username, AVG(rating) as TheAverage, COUNT(*) as TheCount
FROM ratings
WHERE month='Aug'
AND username COLLATE latin1_general_ci IN
(
SELECT username
FROM users
WHERE gender = 1
)
GROUP BY
username
HAVING
TheCount > 4
ORDER BY
TheAverage DESC, TheCount DESC;
изменить таблицу, пользователи конвертируют в набор символов latin1 collate latin1_swedish_ci;