Sql 希望显示表A中与表B有多个关系的记录

Sql 希望显示表A中与表B有多个关系的记录,sql,sql-server,Sql,Sql Server,这听起来像是一个非常简单的查询,但我以前从未需要过这种计算。我正在使用SQL Management Studio和SQL Server 2008 我有一个表ct_workers,其中包含单个员工,还有一个表cs_facilities,其中显示了他们工作的场所 表ct_workers有一个field person,它是每个员工的主要ID,并有一个field facility,通过字段guid将员工链接到cs_facility 我希望展示所有拥有2个或更多设施的工人。 我曾想过使用Excel或row

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

我有一个表ct_workers,其中包含单个员工,还有一个表cs_facilities,其中显示了他们工作的场所

表ct_workers有一个field person,它是每个员工的主要ID,并有一个field facility,通过字段guid将员工链接到cs_facility

我希望展示所有拥有2个或更多设施的工人。 我曾想过使用Excel或rownumber,但这肯定是一种简单有效的方法吗

有人能帮忙吗


谢谢,

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

select w.person
from ct_workers w
group by w.person
having min(w.facility) <> max(w.facility);  -- at least 2 values
但是,如果此人是ct_工作人员的唯一密钥,则此人只能在一个设施中。所以,你的问题没有意义。实际上,您应该有一个每个人和每个设施一行的连接表。

您可以通过


样本数据和期望的结果会有所帮助。谢谢,但这不起作用。我应该澄清的是,“person”是与员工工作的每个家庭相关联的字段,“employee”字段对于他们工作的每个家庭都是唯一的。@matt80-示例数据和预期结果?谢谢,但代码不起作用。你能澄清一下如何从这两个表中构造连接表吗?
SELECT cw.person
FROM ct_workers cw
GROUP BY cw.person
HAVING COUNT(DISTINCT cw.facility) >= 2