Powiedziałeś więcej niż 3 identyfikatory interesu wspólne, więc masz na myśli "co najmniej 4", prawda?
SELECT first1.userid, second1.userid
FROM users_interests first1, users_interests second1,
users_interests first2, users_interests second2,
users_interests first3, users_interests second3,
users_interests first4, users_interests second4
WHERE
first2.userid=first1.userid AND first3.userid=first1.userid AND first4.userid=first1.userid AND
second2.userid=second1.userid AND second3.userid=second1.userid AND second4.userid=second1.userid AND
first1.userid<>second1.userid AND
first1.interestid=second1.interestid AND
first2.interestid=second2.interestid AND first2.interestid<>first1.interestid AND
first3.interestid=second3.interestid AND first3.interestid<>first2.interestid AND first3.interestid<>first1.interestid AND
first4.interestid=second4.interestid AND first4.interestid<>first3.interestid AND first4.interestid<>first2.interestid AND first4.interestid<>first1.interestid
Ponieważ nie testowałem tego, proszę pamiętać, że mogą być w nim błędy, więc używać go tylko wtedy, gdy go zrozumieć.
Jeśli potrzebujesz tego samego dla innych wspólnych interesów, jestem pewien, że możesz napisać kod, aby dynamicznie wygenerować to zapytanie dla dowolnej liczby. Ponadto, jeśli interesują Cię nazwy o nazwach, jestem pewien, że będziesz mógł dodać niezbędne cztery połączenia do tabeli interests
i dodać odpowiednie kolumny do klauzuli SELECT
.
Amazing! Dziękuję za to, działa to pięknie! – Ryan