如何根据条件查找某些特定表的记录数?

时间:2012-09-14 10:00:43

标签: sql sql-server-2008

我有一个典型的要求。

我有一个用户表“tblUsers”,其中我有两列“UserID”和“UserEmail”。 UserEmail列不是唯一列,因此可以存在具有相同电子邮件ID的两个记录,而UserID列是标识列。

我还有两个表“tblOrders”和“tblTravelers”,它们都有“UserID”列作为外键(链接到“tblUsers”UserID列)。

现在,我想要的是一个存储过程,它返回给我这个数据表:

enter image description here

我的意思是如果我将“UserEmail”作为参数提供给存储过程,它应该返回上面的表格,显示与给定“UserEmail”的每个UserID相关联的记录。

请帮帮我,我是SQL Server的新手,我知道如何查找个人记录计数,但我无法找到上述要求的解决方案。

1 个答案:

答案 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