Всем привет. Есть две таблицы products, reviews.
products: id |product_name|image
reviews: id |product_id | rating(int)
Нужно получить
product_name | image | AVG(rating)
Вроде бы элементарно, но ...
select products.name, products.image, AVG(rating)
from products,reviews WHERE products.id=reviews.product_id;
ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'review.products.name'; this is incompatible with sql_mode=only_full_group_by
Вот так должно сработать
select
pro.id, pro.name, pro.image, avg(rev.rating) from products pro
join reviews rev on pro.id = rev.product_id
group by pro.id, pro.name, pro.image
Для подсчета среднего нужно использовать в запросе group by, подробнее можно почитать тут: https://oracleplsql.ru/group-by-sql.html
Сборка персонального компьютера от Artline: умный выбор для современных пользователей