powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос!
9 сообщений из 9, страница 1 из 1
Помогите составить запрос!
    #39672401
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!

Есть таблица товаров (`prods`):
`prod_id`, `prod_name`, `prod_desc` и т.д...

И таблица отзывов о товарах (`reviews`):
`rev_id`, `rev_prod`, `rev_rating`, `rev_text` и т.д...

Связь: `reviews`.`rev_prod` => `prods`.`prod_id`

В поле `rev_rating` пишется "оценка" товара (число от 0 до 5)

Мне нужно получить одним запросом среднюю оценку по каждому товару...

Я пробовал так:

Код: sql
1.
SELECT `prod_id`, `prod_name`, `prod_desc`, AVG(`rev_rating`) as `avg_rating` FROM `prods`, `reviews`;



Но в результате получаю только один товар...
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672408
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillus,

добавьте в конец запроса : group by prod_id`, `prod_name`, `prod_desc`
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672414
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анна, да, так он отдает все товары, но рейтинг одинаков, т.е. он не считает по каждому AVG()... Тут что-то сложнее по-видимому, какие-то подзапросы нужно использовать... :(
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672427
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillus,

условия соединения таблиц ещё требуется указать. иначе у вас получается декартово произведения - каждая строка из prods соединяется со всеми строками из reviews. в итоге - по каждому товару имеем полный набор отзывов, даже тех, которые к этому товару не относятся...
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672434
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillus,

пока ещё не привыкли к плохому - сразу учитесь писать соединения источников данных через JOIN, а не через "запятую" + условия в where.


то есть, у вас должен получится запрос примерно такой структуры:
Код: sql
1.
2.
3.
4.
5.
select prod_id, prod_name, prod_desc, AVG(rev_rating) as avg_rating 
  FROM prods p
  JOIN reviews r
    ON p.prod_id = r.rev_prod
 group by prod_id, prod_name, prod_desc;
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672439
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillusМне нужно получить одним запросом среднюю оценку по каждому товару...А если на товар нет отзывов?
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672442
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анна, спасибо. Прояснилось...
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672443
atillus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, если нет отзывов, то и рейтинга пока нет... или эти товары вообще не попадут в выдачу при таком запросе?
...
Рейтинг: 0 / 0
Помогите составить запрос!
    #39672471
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
atillusAkina, если нет отзывов, то и рейтинга пока нет... или эти товары вообще не попадут в выдачу при таком запросе?не попадут вообще. если они нужны, но с нулевым рейтингом, то читать про внешние ([LEFT | RIGHT] {OUTER} JOIN) соединения.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]