1

我有一个典型的要求。

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

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

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

在此处输入图像描述

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

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

4

1 回答 1

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
于 2012-09-14T10:11:27.057 回答