Zoiets.
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)
In het Engels (wat het al dan niet duidelijker maakt.)
- Selecteer de naam van de persoon en het aantal interesses dat ze delen
- Van de tafel met mensen
- Deelnemen aan de interessetabel zodat die tafel
- Is alleen de interesse van de persoon die we proberen te matchen.
- (groeperen op mensen
- en sorteer op het aantal interesses dat overeenkomt.)
Bijgewerkt zonder de subquery maar minder duidelijk
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)