[英]SQL count records in from multiple tables Group by UsedID
我有一些 forms。它包含不同的 usedId 作为外键。 一个用户有多个forms,现在想看一个用户提交了多少个forms。
我想要 output:
登录 ID、FormName、NumberOfForms
Shakil -> BurnOut -> 10
沙基尔 -> CIP -> 8
Shakil -> 加热 -> 20
但起初,我需要 output。然后装修。
我正在尝试多种方法来解决它。
select COUNT(*) as NumberOfForms from Client_BurnOuts b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all
select COUNT(*) as NumberOfForms from Client_EmergencyAssistances b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all
select COUNT(*) as NumberOfForms from Client_DukeEnergyFoundations b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
union all
select COUNT(*) as NumberOfForms from Client_CIPEnergyCrisises b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
;
另一种方式
SELECT l.LoginID,
COUNT(cb.PatientApplicationId) as BurnOuts ,
COUNT(ea.PatientApplicationId) as EmergencyAssistances,
COUNT(du.PatientApplicationId) as DukeEnergyFoundations,
COUNT(cip.PatientApplicationId) as CIP
FROM PatientPortalLogins l
inner join Client_CIPEnergyCrisises cip ON cip.PatientApplicationId = l.PatientApplicationId
inner join Client_DukeEnergyFoundations du ON du.PatientApplicationId = l.PatientApplicationId
inner join Client_EmergencyAssistances ea ON ea.PatientApplicationId = l.PatientApplicationId
inner join Client_BurnOuts cb ON cb.PatientApplicationId = l.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID, cip.PatientApplicationId, cb.PatientApplicationId;
但我得不到正确的结果。 我一共有五张表,PatientPortalLogins表只包含用户名,usedId.....而四张表包含不同的值,
我只想看看哪个用户提交了多少页。 使用的示例1 提交 2 Client_CIPEnergyCrisises forms、1 EmergencyAssistances forms、5 DukeEnergyFoundations forms
最后,我可以解决我的问题。 如果您有多个表,那么我们可以使用它们。
select l.LoginID, 'Client_BurnOuts' as Client_BurnOuts, COUNT(*) as NumberOfForms
from Client_BurnOuts b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all
select l.LoginID, 'Client_EmergencyAssistances' as Client_EmergencyAssistances, COUNT(*) as NumberOfForms
from Client_EmergencyAssistances b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all
select l.LoginID, 'Client_DukeEnergyFoundations' as Client_DukeEnergyFoundations, COUNT(*) as NumberOfForms
from Client_DukeEnergyFoundations b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
union all
select l.LoginID, 'Client_CIPEnergyCrisises' as Client_CIPEnergyCrisises, COUNT(*) as NumberOfForms
from Client_CIPEnergyCrisises b
inner join PatientPortalLogins l on l.PatientApplicationId = b.PatientApplicationId
where l.PatientApplicationId = 10
GROUP BY l.LoginID
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.