我有两个(三个 - 第三个是绑定表)表User和Feature。他们处于多对多的关系中。我想构建查询,查找具有与特定用户类似功能的所有用户。
我知道通常我可以使用这样的东西:
select user from User user
inner join user.feature feature
where feature in :features
但这只适用于我只关注一个特定功能的情况。有没有办法如何在SQL中比较“两个功能”中的“功能”?或者我必须在业务层中这样做吗?
答案 0 :(得分:1)
您可以使用SQL。如果我理解,您希望根据与给定用户共有的功能对其他用户进行排名。
select uf.user, count(*) as FeaturesInCommon
from user_features uf join
user_features uf2
on uf.feature = uf2.feature
where uf2.user = $user
group by uf.user
order by FeaturesInCommon desc;