另一个快速的SQL问题

时间:2010-07-13 10:46:43

标签: sql

我有以下表结构,A - < B代表一个A可以有很多B

User -< Computer -< ComputerConfiguration -< Benchmark >- GameVersion >- Game

它们与PK int键连​​接。

一个用户可以拥有多台计算机,计算机可以有多个配置,配置可以有很多基准测试,而基准测试有FK游戏版本有FK游戏

如何计算每位用户的唯一游戏总数?

我可以在一个查询中计算每个用户的计算机,基准和游戏数量吗?

1 个答案:

答案 0 :(得分:1)

要100%具体了解答案,我们需要知道您正在使用哪个DBE。

请注意这只是伪代码,但一般的想法是......

SELECT COUNT(DISTINCT Game)
  FROM User
INNER JOIN Computer
  INNER JOIN ComputerConfig...

回答您的下一个问题,如果您想在单个查询中完成所有这些计数,则需要使用一些子查询。

SELECT User, r1.ComputerCount, r2.BenchmarkCount
  FROM User
 INNER JOIN (SELECT User as UserId, count(*) FROM User INNER JOIN Computer ON (...) GROUP BY User) as r1 ON (User.id = r1.UserId)
 INNER JOIN (SELECT User as UserId, count(Distinct Benchmark) FROM ...) as r2 ON (User.id = r2.UserId)

......等等