2009-05-26 5 views
0

У меня есть две таблицы продуктов и обзоры
каждый продукт имеет несколько обзоров, связанные с помощью внешнего ключа product_id в таблице отзывов
дополнительно каждый обзор поля называется оценкой с десятичным значением
Я желаю чтобы получить имена всех продуктов, средний рейтинг выше определенного порога
что-то в линияхSQL фильтрация по средним

SELECT p.name 
FROM products p 
INNER JOIN reviews r ON p.id = r.product_id 
WHERE avg(r.rating) > 3 

MySQL не позволил мне использовать функцию Avg в выражении WHERE.
Как мне сделать что-то подобное?

ответ

7

использование «с»

SELECT p.name, avg(r.rating) as average 
FROM products p 
INNER JOIN reviews r ON p.id = r.product_id 
GROUP BY p.name 
HAVING avg(r.rating) > 3 
+1

Woops - Я пропустил «GROUP BY» - исправлено –

+0

Вот почему когда-нибудь HAVING пункт упоминается как «ИНЕКЕ группы» –

+0

Это занимает гораздо больше времени, чтобы скажем, чем «иметь» :) –

Смежные вопросы