Как указать WHERE в операторе JOIN? - PullRequest
0 голосов
/ 11 февраля 2012

Это моя первая попытка оператора JOIN MySQL ...

У меня есть 2 таблицы .. games и games_ratings

В обеих таблицах есть столбец идентификатора.идентификатор представляет собой идентификатор игры.и я только хочу получить среднее число целых в столбце рейтинга, где идентификатор в games_ratings равен идентификатору из таблицы игр.

SELECT a.id, a.name, AVG(b.rating) AS average FROM games a LEFT JOIN games_ratings b GROUP BY a.id ORDER BY average DESC LIMIT 50;

есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Попробуйте:

SELECT a.id, a.name, AVG(b.rating) AS average 
    FROM games a 
    LEFT JOIN games_ratings b
    ON a.id = b.id # <-- You need this line I believe 
GROUP BY a.id
ORDER BY average DESC LIMIT 50;

Редактировать: Это немного сложно без вашей полной схемы, но вы можете попробовать что-то вроде этого.

SELECT a.id, a.name, AVG(b.rating) AS average, COUNT( b.id) as votes
    FROM games a 
    LEFT JOIN games_ratings b
    ON a.id = b.id 
GROUP BY a.id
ORDER BY votes DESC, average DESC LIMIT 50; # <-- You may need to modify this line
1 голос
/ 11 февраля 2012

Не забудьте предложение WHERE, которое он запросил:

, где идентификатор в games_ratings равен идентификатору из таблицы игр

> SELECT a.id, a.name, AVG(b.rating) AS average 
>     FROM games a 
>     LEFT JOIN games_ratings b
>     ON a.id = b.id # <-- You need this line I believe
>     **WHERE a.id = b.id**  
>     GROUP BY a.id 
>     ORDER BY average DESC LIMIT 50;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...