另一个快速SQL问题

另一个快速SQL问题,sql,Sql,我有下面的表格结构,A-

我有下面的表格结构,A-
User -< Computer -< ComputerConfiguration -< Benchmark >- GameVersion >- Game
User--游戏版本>-游戏
它们通过PK int键连接

一个用户可以有多台计算机,计算机可以有多个配置,配置可以有多个基准,基准有FK到游戏版本,其中FK到游戏版本

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


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

要在答案上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)

。。。以此类推

我认为最好是暂停开发并学习一点SQL。如果您的应用程序中需要一个数据库,您将无法继续这样做。不用担心,伙计。我不是个十足的傻瓜:)谢谢。似乎子查询是不必要的,我可以在按用户ID分组时使用多个计数(不同的),它工作得很好。完美!只是出于好奇,你在使用哪个数据库?