密钥库数据库/双打条件

时间:2010-11-09 08:36:28

标签: sql ruby-on-rails

我正在尝试检索所有拥有其偏好的用户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]。

由于

2 个答案:

答案 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)上创建一个索引,以便快速工作。