【发布时间】:2012-04-13 14:56:56
【问题描述】:
我有一个查询,我在其中加入 3 个关系....A、B &。加入是在一个唯一的 id 上。表 B 包含彼此相似的行,我想对表 B 中的 FK 列(来自 A 的 PK)执行 DISTINCT。
为了更清楚地说明这一点:
A B C
--------- --------- ---------
No. (PK) Id(PK) Id (PK)
Name Role Address
No.(FK) No.(FK)
表 B 可以有表 A 中的多个人员实例。我想要一个查询,该查询从 A、B 和 C 中提取字段,并加入 No. 字段。表 B 可以有几行的编号列具有相同的值,因此我想对编号列执行 DISTINCT。
我该怎么做?
示例数据:
NAME ROLE ADDRESS
---------------------------------------
John Smith Manager 1, The Village
Dawn French Secretary 2, The City
John Smith SQL Dev 1, The Village
Terry Tibbs HR Manager 8, The Road
这是连接关系 A、B 和 C 的示例:
SELECT A.Name, B.Role, C.Address
FROM A, B, C
WHERE A.No = B.No AND B.No = C.No
表 B 可能包含多个具有多个角色的 John Smiths(同一个人) -> 因此我想对唯一标识一个人的编号进行 DISTINCT。这是表A(编号)的ePK。
【问题讨论】:
-
不清楚这是 SQL 问题还是 LINQ(-To-Sql) 问题或其他问题,因为您已标记所有(但不是 dbms)。
-
我相信您正在寻找的是分组。
-
你能把你拥有的数据和你除外的数据显示出来吗?
-
喜见编辑 - 使用 sql server
-
你应该使用标准的 ANSI JOIN 语法
FROM A INNER JOIN B ON A.No = B.No INNER JOIN C ON B.No = C.No
标签: c# asp.net sql-server web-services