Một cái gì đó như thế này.
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)
Bằng tiếng Anh (có thể có hoặc có thể không làm cho nó rõ ràng hơn.)
- Chọn tên của người đó và số lượng sở thích mà họ chia sẻ
- Từ bảng mọi người
- Tham gia bảng sở thích sao cho bảng đó
- Là chỉ sở thích của người mà chúng tôi đang cố gắng đối sánh.
- (nhóm theo người
- và sắp xếp theo số lượng sở thích phù hợp.)
Đã cập nhật mà không có truy vấn phụ nhưng kém rõ ràng hơn
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)