我正在尝试检索所有拥有其偏好的用户ID(IN(1,7)AND(2))。即使没有user_id上的组。它不起作用。任何想法都会非常有用。
HasPreference.find(:all, :conditions => ["preference_id IN (1,7) AND preference_id = 2"], :group => :user_id)
TABLE是'has_preferences'
ID -- PREFERENCE_ID -- USER_ID
1 -- 2 -- 1
1 -- 7 -- 1
1 -- 1 -- 1
1 -- 2 -- 2
我希望得到[1]。
由于
答案 0 :(得分:1)
我不知道如何将其转换为Ruby,但我相信以下SQL语句可以满足您的要求。
SQL声明
SELECT p.*
FROM dbo.has_preferences p
INNER JOIN (
SELECT User_ID
FROM dbo.has_preferences
WHERE Preference_ID IN (1, 7)
) pIN ON pIN.User_ID = p.User_ID
WHERE p.Preference_ID = 2
答案 1 :(得分:1)
SELECT user_id
FROM has_preferences
WHERE preference_id = 2
AND user_id IN
(
SELECT user_id
FROM has_preferences
WHERE preference_id IN (1, 7)
)
在(preference_id, user_id)
上创建一个索引,以便快速工作。