Сделать правильный запрос SQL

85
06 сентября 2021, 08:40

Всем привет. Есть две таблицы 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

Answer 1

Вот так должно сработать

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

READ ALSO
Как переместить и запустить рабочий проект Laravel на другом ПК

Как переместить и запустить рабочий проект Laravel на другом ПК

я новичок в LaravelХочу перенести проект с ноутбука на ПК

155
Slim, OAuth 2.0, андройд приложение

Slim, OAuth 2.0, андройд приложение

Появилась необходимость сделать регистрацию и авторизацию для андройд приложения, для этих целей предполагается использование Slim и OAuth20...

239
Пресловутый mysqli_fetch_assoc() в WordPress

Пресловутый mysqli_fetch_assoc() в WordPress

Знаю, что много уже написано на тему ошибок с mysqli_fetch_assoc() Но вот снова

185
Поясните что за конструкция? ${'

Поясните что за конструкция? ${'

В этом фрагменте мы получаем строки от $rand->getValue(), далее разбиваем их на массив дабы каждая строка была в каждом элементе массива, но что проиходит...

273