Je zou de EXCEPT
. kunnen gebruiken telefoniste.
Eerstegraads contacten:
SELECT contact_2 FROM contact WHERE contact_1 = 'gulsah'
Tweedegraads contacten die geen eerstegraads contacten zijn:
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
vertelt SQL-server om alle resultaten van de eerste SELECT
. te retourneren die NIET verschijnen in de tweede SELECT
.
Voor derdegraads contacten (die geen eerste- of tweedegraads contacten zijn):
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'
)
Ik heb geen hoge verwachtingen van de prestaties, maar dit moet u natuurlijk zelf controleren.
Even terzijde:
I can select mutual contacts but I guess it is not the right approach.
Gebruik INTERSECT
hiervoor.