EXCEPT
を使用できます 演算子。
一次連絡先:
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'
1度の連絡先ではない2度の連絡先:
SELECT
contactB.contact_2
FROM
contact AS contactB
INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
EXCEPT
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'
EXCEPT
最初のSELECT
からのすべての結果を返すようにSQLサーバーに指示します 2番目のSELECT
には表示されません 。
3度の連絡先(1度または2度の連絡先ではない)の場合:
SELECT
contactC.contact_2
FROM
contact AS contactC
INNER JOIN contact AS contactB ON contactB.contact_2=contactC.contact_1
INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
EXCEPT
(
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'
UNION
SELECT
contactB.contact_2
FROM
contact AS contactB
INNER JOIN contact AS contactA ON contactA.contact_2=contactB.contact_1
WHERE contactA.contact_1 = 'gulsah'
)
パフォーマンスにはあまり期待していませんが、もちろん自分でチェックする必要があります。
補足として:
I can select mutual contacts but I guess it is not the right approach.
INTERSECT
を使用する このため。