2013-04-10 64 views
1

我有一个简单的查询:SQL#/计数从内部联接

SELECT games.* 
FROM games 
INNER JOIN invitations ON invitations.game_id = games.id 

我想#(COUNT)游戏的邀请。 我不确定在哪儿放计数声明。

回答

1

您将使用count()聚合函数和组由游戏ID:

SELECT g.id, g.name, count(i.game_id) TotalInvitations 
FROM games g 
INNER JOIN invitations i 
    ON i.game_id = g.id 
group by g.id, g.name 

这也可以使用子查询写着:

select g.*, i.TotalInvitations 
FROM games g 
INNER JOIN 
(
    select game_id, count(game_id) TotalInvitations 
    from invitations 
    group by game_id 
) i 
    ON i.game_id = g.id 
0

count那张select子句。它计算该记录的分组级别的所有记录。为了得到你需要通过games.id分组的游戏计数。如果你仅仅指刚想要总数然后从SELECT子句中删除,games.id并没有做任何的分组。

SELECT count(invitations.invitationID), games.id 
FROM games 
INNER JOIN invitations ON invitations.game_id = games.id 
Group By Games.Id