2017-05-07 10 views
0

新しいマスタデータ管理製品、特に人とのマッチングで作業する。 PersonとPersonMatchという2つのテーブルがあります。 PersonMatchは、Personの行とPersonの行を一致させるジョイン・テーブルです。マッチングエンティティ - 自己多対多

人:1,2,3,4(PersonMatchごとに、これらはすべて同じPersonです)。

PersonMatch:+ 2 1、+ 3 2、+ 4 3、4 + 1

私は同じようPersonテーブルからすべての4つのエンティティを処理するために、クエリのまわりで私の頭をラップすることはできません。助けてくれてありがとう!

+0

これは...できないか、情報が欠落しています。 Personがディメンション表でない場合、PersonMatchはPersonとどのように関連していますか? Personが何をしているのか、そしてPersonMatchが何を達成しているのか再度尋ねます。 –

+0

私たちのデータの構造についての詳細情報を提供する必要があります。 – hvanbrug

答えて

0

PersonUniqueIdである特定の列が必要であり、同じPersonインスタンスすべてに違いを識別する固有のIDを持つことができますが、それぞれ同じPersonUniqueIdを共有するように聞こえますそれらは実際に同じ人であることを反映しています。

PersonUniqueIdを持っていない場合は、各レコードの中で、2人の人物が同じか、おそらく名前か、それとも他のものかを特定する必要があります。あなたの全体的な構造についてもっと知ることなく、何が最善の方向であるかは言うまでもありませんが、うまくいけばこれがスタートです。

PersonMatchテーブルが必要ない場合もあります。または、PersonUniqueId列をそのテーブルに配置して、次のようにすることができます。

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

これが役に立ちます。

関連する問題