2017-05-07 46 views
0

使用新的主数据管理产品,特别是人员匹配。 我有两个表:Person和PersonMatch。 PersonMatch是一个连接表,它将Person中的行匹配到Person中的另一行。匹配实体 - 自我多对多

人:1,2,3,4(根据PersonMatch,这些都是一样的人)。

PersonMatch:1 + 2,2 + 3,3 + 4,4 + 1

我不能换我的头周围的查询从Person表一样对待所有四个实体。谢谢你的帮助!

+0

他们不能......或者我们缺少信息。如果Person不是维度表,PersonMatch如何与Person关联?再次询问Person做什么以及PersonMatch完成什么。 –

+0

您需要提供更多关于我们数据结构的信息,或许您的目的 – hvanbrug

回答

0

这听起来像你需要一个PersonUniqueId的特定列,并且所有Person实例都可以有自己的唯一ID来标识它们的区别,但它们每个都会共享相同的'PersonUniqueId',这反映他们真的是同一个人,只是有不同的或额外的后续信息。

如果你没有使用PersonUniqueId,那么你需要弄清楚每个记录中哪些标识这两个人是相同的,也许是名字,或其他任何东西。不知道更多关于您的整体结构很难说什么是最好的方向,但希望这是一个开始。

这可能是PersonMatch表甚至不需要。或者,你可以把该表中的PersonUniqueId列,然后做一些事情,如:

SELECT p.* 
FROM Persons p, PersonMatch pm 
WHERE p.PersonId = pm.PersonId 
GROUP BY pm.PersonUniqueId 

希望这有助于。