Уточнить результат sql, установленный в среднем - PullRequest
2 голосов
/ 22 июля 2011

У меня есть следующая строка SQL, которая возвращает все фан-арты в БД с рейтингом 10 ... в настоящее время это работает, но не так, как первоначально предполагалось ...

Мне бы хотелось, чтобы он возвращал результаты, где средний рейтинг фан-арта равен 10 ... каждая строка фан-арта в таблице рейтингов может ссылаться на один и тот же itemid, что позволяет нам иметь несколько пользовательских рейтингов на один кусочек. художественного произведения ... я хотел бы, чтобы он возвращал только отдельные элементы, где среднее значение всех оценок равно 10.

SELECT DISTINCT g.gametitle, 
                p.name, 
                g.id, 
                b.filename 
FROM   games AS g, 
       banners AS b, 
       platforms AS p, 
       ratings AS r 
WHERE  r.itemid = b.id 
       AND r.rating = '10' 
       AND g.id = b.keyvalue 
       AND r.itemtype = 'banner' 
       AND b.keytype = 'fanart' 
       AND g.platform = p.id 
ORDER  BY Rand() 
LIMIT  6; 

Здесь надеемся, что кто-то умнее меня сможет это понять!

Я попытался создать подзапрос, который использовал функцию AVG (), но безрезультатно.

Жду ответов на некоторые вызывающие мысли ответы!

1 Ответ

2 голосов
/ 22 июля 2011

Это требует АГРЕГАЦИИ !

   SELECT g.gametitle, 
          p.name, 
          g.id, 
          b.filename 
   FROM   games AS g, 
          banners AS b, 
          platforms AS p, 
          ratings AS r 
   WHERE  r.itemid = b.id 
          AND g.id = b.keyvalue 
          AND r.itemtype = 'banner' 
          AND b.keytype = 'fanart' 
          AND g.platform = p.id 
   GROUP BY g.gametitle, 
            p.name, 
            g.id, 
            b.filename 
   HAVING AVG(r.rating) = 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...