Я следующий SQL-запрос:Что с этим SQL
SELECT tblBooks.bookID,
tblBooks.title,
tblBooks.author,
tblBooks.coverImage,
ROUND(ROUND(tblReviews.rating * 2)/2, 1) AS rating
FROM tblBooks
LEFT JOIN tblReviews
ON tblBooks.bookID = tblReviews.bookID
LEFT JOIN tblMembers
ON tblReviews.userID = tblMembers.userID
WHERE tblReviews.bookID IS NOT NULL
ORDER BY rating DESC
LIMIT 0, 40
Я хотел бы запросить базу данных и вернуть среднюю оценку, так что, если книга была пересмотрена 6 раз, всего каждую оценку от 6 пользователей и вычислить среднее значение. Сейчас возвращается только последний рейтинг. Когда я меняю эту строку на:
ROUND(ROUND(AVG(tblReviews.rating) * 2)/2, 1) AS rating
всего один результат возвращается в общей сложности, поэтому, очевидно, что-то не так, но я понятия не имею, что.
Если кто-то может пролить свет на это, я думаю, что это будет иметь какое-то отношение к моим объединениям.
Вы не можете смешивать агрегатные функции и обычные столбцы.Вам нужно сгруппировать, чтобы получить этот результат или использовать подзапрос –