2015-07-05 39 views
0

我有兩個(三個 - 第三個是綁定表)用戶和功能表。他們處於多對多的關係。我想構建查詢,查找具有與特定用戶相似功能的所有用戶。如何構造比較M:N關係中兩個集合的查詢?

我知道,平時我可以用這樣的:

select user from User user 
inner join user.feature feature 
where feature in :features 

但是這隻有當我找只爲一​​個特定的功能。有沒有辦法通過比較SQL中的「兩組」功能中的「兩組」功能?或者我必須在業務層做到這一點?

回答

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; 
+0

非常感謝。有幫助。 – mark