多个连接以从多个表中获取数据和计数

时间:2015-09-01 18:59:15

标签: sql join left-join

这可能很简单,但我一直在努力。基本上我需要结合两个不同的查询:

  1. 获取帐户列表以及每个
  2. 的一些信息
  3. 根据每个帐户,获取与每个帐户相关联的用户和表单的数量。
  4. 因此给出了以下表格结构:

    enter image description here

    我想回来:

    Name      Users    Forms     Active
    ====================================
    Child 1     3        4          T
    Child 2     4        3          F
    

    所以问题是我想先根据Master id查询:

    Select * from ACCOUNT where MasterId = 1026
    
    AccntId   Name  Master Id   Active
    ====================================
    2       Child 1    1026        T         
    3       Child 2    1026        F
    

    然后,对于每个返回的人,我想得到用户和表格的数量。

    Select Count(AccntId) as Users from Form Where AccntId=2
    

    当然,所有这些都在一个查询中。我已经弄乱了Joins和Left Joins以及初始查询中的绊脚石。

2 个答案:

答案 0 :(得分:1)

好的,关心的人的最终查询结果是:

interstates = cities.values.flatten.uniq

最终给了我正在寻找的数字:

SELECT
    A.Id as AccountId, A.Name, A.Active, 
   (select count(*) as Users FROM UserProfile UP where A.Id = UP.AccountId), 
   (select count(*) as Forms FROM Form F where A.Id = F.AccountId)
FROM
    Account A
WHERE
    A.MasterId = 1026 
Group By A.Id, A.Name, A.Active

不确定这是否是最有效或最恰当的方法,但确实有效!感谢评论员的提示

答案 1 :(得分:0)

SELECT acc.MasterId, count(up.AccntId) as Users, count(f.AccntId) as Forms
from Account acc
full join UserProfile up
    on up.AccntId = acc.AccntId
full join Form f
    on f.AccntId = acc.AccntId
-- Where /* Your conditions */
group by acc.MasterId;

这应该有用。

编辑:加入已更改为左连接