我有一个典型的要求。
我有一个用户表“tblUsers”,其中我有两列“UserID”和“UserEmail”。 UserEmail列不是唯一列,因此可以存在具有相同电子邮件ID的两个记录,而UserID列是标识列。
我还有两个表“tblOrders”和“tblTravelers”,它们都有“UserID”列作为外键(链接到“tblUsers”UserID列)。
现在,我想要的是一个存储过程,它返回给我这个数据表:
我的意思是如果我将“UserEmail”作为参数提供给存储过程,它应该返回上面的表格,显示与给定“UserEmail”的每个UserID相关联的记录。
请帮帮我,我是SQL Server的新手,我知道如何查找个人记录计数,但我无法找到上述要求的解决方案。
答案 0 :(得分:2)
这将返回转置的数据 - 订单和旅行者为列,用户为行。
select users.id, users.email,
COUNT(distinct orders.oid) as orders,
COUNT(distinct travellers.tid) as travellers
from users
left join orders on users.id = orders.userid
left join travellers on users.id = travellers.userid
where users.email = @email
group by users.id, users.email