我有以下表结构,A - < B代表一个A可以有很多B
User -< Computer -< ComputerConfiguration -< Benchmark >- GameVersion >- Game
它们与PK int键连接。
一个用户可以拥有多台计算机,计算机可以有多个配置,配置可以有很多基准测试,而基准测试有FK游戏版本有FK游戏
如何计算每位用户的唯一游戏总数?
我可以在一个查询中计算每个用户的计算机,基准和游戏数量吗?
答案 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)
......等等