Coś takiego.
Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid
left join interests on people_interests.interestid = interests.interest.id
where interests.id in (select id from interests where interests.peopleid = @inputuserid)
group by people.id, people.name
order by count(interest.id)
W języku angielskim (co może, ale nie musi, wyjaśniać.)
- Wybierz imię i nazwisko osoby oraz liczbę wspólnych zainteresowań
- Od stołu ludzi
- Dołącz do tabeli zainteresowań tak, aby ta tabela
- To tylko interesy osoby, którą staramy się dopasować.
- (grupuj według osób
- i uporządkuj według liczby pasujących zainteresowań).
Zaktualizowano bez zapytania podrzędnego, ale mniej przejrzyste
Select people.id, people.name, count(interest.id)
from people
left join people_interests on people.id = people_interests.peopleid
left join interests on people_interests.interestid = interests.interest.id
inner join interest i2 on (interests.id = i2.id and i2.people_id = @inputuserid)
group by people.id, people.name
order by count(interest.id)