试图显示表A中与表B有多个关系的记录

时间:2019-02-25 15:04:55

标签: sql sql-server

这听起来像是一个非常简单的查询,但是我以前从未需要过此计算。我正在使用SQL Management Studio和SQL Server 2008。

我有一个表 ct_workers ,其中包含各个员工,还有另一个表cs_facilities,该表显示了他们工作的站点。

表ct_workers中有一个字段 person (每个人的主要ID),还有一个字段设施,该字段将员工链接到 cs_facilities 通过字段 guid

我希望显示所有具有2个或更多设施的工人。 我虽然已经在使用Excel或行号,但是肯定是一种简单有效的方法吗?

有人可以帮助吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以将GROUP BYHAVING一起使用

SELECT cw.person
FROM ct_workers cw
GROUP BY cw.person
HAVING COUNT(DISTINCT cw.facility) >= 2

答案 1 :(得分:0)

您的问题建议您可以使用聚合:

select w.person
from ct_workers w
group by w.person
having min(w.facility) <> max(w.facility);  -- at least 2 values

但是,如果personct_workers中的唯一键,那么一个人只能在一个设施中。因此,您的问题没有任何意义。实际上,您应该有一个联结表,每个人和每个设施都有一行。