を含む表からユニークなペアを抽出し、多くの人にデータの束を持つデータベースの大きな塊ががと結婚しているSQL Server 2005のを考えてみましょう。人物間の関係を追跡するために、関係テーブルが存在し、1人のIDと別の人物のIDをリンクさせます。 A 各リレーションシップレコードの関係タイプは、問題の2人の人々(duh)の間に存在する関係の種類を示します。「結婚しました」、「息子です」、「息子です」、「娘です」などは相互関係に
結婚した人にとって、テーブルには2つの関係レコードがあります.1つは、Person-AがPerson-Bと結婚していることを示すレコードと、Person-BがPerson-Aと結婚していることを示す別のレコードです。結婚の場合、両方のレコードを持たないというエラーが考えられますが、DBには往復しないレコードがいくつかあります。 (これは継承され、設計であり、私はこのアプローチを変更する自由を持っていません。)
RelID Person1 Person2 RelationshipType
-----------------------------------------
1 1001 1010 Married //Reciprocated by RelID 4
2 1002 1011 Married //Reciprocated by RelID 5
3 1003 1012 Married //Reciprocated by RelID 6
4 1010 1001 Married //Reciprocated by RelID 1
5 1011 1002 Married //Reciprocated by RelID 2
6 1012 1003 Married //Reciprocated by RelID 3
7 1004 1013 Married //Not properly reciprocated
私は何をする必要があることは、テーブルからユニークな夫婦を抽出しています。
I関数を作成し、2つのIDを取得し、順番に両方の値のカンマ区切り文字列値を返しGetOrderedPair(VAL1、VAL2)と呼ばれます。この方法では、上記の例のデータを参照して、RelIDが1またはRelIDが4(レコードの往復ペア)であるPerson1とPerson2のレコードを参照して、同じ文字列値を返します。
私には、より良い方法があるとは思えません。この機能の使用は最良のアプローチですか?他に何をお勧めしますか?
ありがとう、もちろん、事前に。 :-)
だから明らかです。今私は質問に恥じている。ありがとう、エリック。 – witttness