SQL。使用JOINS和COUNT函数通过另外两个表计算变量

时间:2017-04-27 17:41:28

标签: mysql sql join

我想计算在某个帐户中有多少房子,其中参数将是玩家ID。

重要的表格显示在图片上:enter image description here

我们可以看到,玩家拥有自己的账号。该帐户可以有超过1个玩家,所以我需要检查帐户上的所有玩家是否有房子或没有。 (1名球员可以有1个房子)

我想创建一个SQL脚本,对于某些player_id,我会返回属于该玩家的帐户所拥有的房屋总数。

例如: Player_1,属于account_1

account_1上有3名玩家:

  • Player_1
  • Player_2
  • Player_3

Player_3和Player_1是某些房屋的所有者。

Player_1的功能应该返回2.

我已经做了一些JOIN&edu up with

SELECT players.id AS Player_id, players.name AS Player_name, accounts.id AS 
Account_id, houses.id AS HouseID
FROM players
INNER JOIN accounts ON players.account_id=accounts.id

LEFT JOIN houses ON players.id=houses.owner

ORDER BY accounts.id ASC;

这打印了我,很好地连接了玩家的帐户ID和他们拥有的房屋ID(如果不是房子的拥有者,则为NULL)

我想在某个玩家的每个帐户中拥有一些房子。

2 个答案:

答案 0 :(得分:1)

我首先将每个玩家连接到他的共同玩家(即共享相同accountId的玩家)。然后,对于每个共同参与者,左边加入他们的房子(如果有的话)。请注意,对于每一行,如果此共同玩家不拥有房屋,则相关联合玩家的house-id将为NULL。最后,它只是由玩家分组并计算他的共同玩家的所有潜在的家伙:

SELECT p.id AS Player_id, count(h.id)
FROM players p join players co_players on p.account_id = co_players.account_id
     left join houses h on co_players.id = h.owner
group by p.id

答案 1 :(得分:0)

SELECT Count(*)  
FROM houses  
LEFT JOIN players ON players.id = houses.owner  
Where players.id = { here put a player id without the curly braces }