【发布时间】:2009-10-21 16:04:47
【问题描述】:
在我正在开发的产品中,我有一个消息模型。
消息可以限制在群组中,也可以不受限制(可用于 大家)。
如果用户属于消息的组之一或消息不是 受限,用户可以看到消息。
这是选择可见消息的查询(希望它可以 澄清我的意思)
(2,3,4,5,6,1) 是用户所属的组,它们是不同的 每个用户
SELECT `messages`.* FROM `messages`
LEFT JOIN groups_messages ON
messages.id=groups_messages.message_id AND groups_messages.group_id in (2,3,4,5,6,1)
WHERE (messages.restricted=0 OR groups_messages.group_id is not NULL)
GROUP BY messages.id
这里是使用子查询的类比查询,希望它有助于澄清需要什么
SELECT * FROM `messages` WHERE
(
restricted=0 OR id in ( select distinct message_id from groups_messages where group_id in (2,3,4,5,6,1) )
)
是否有可能以某种方式将此可见性设置应用于思考 狮身人面像结果?意味着将此 OR 和 IN 应用于
Message.search "test" with/with_all
?
如果不可能,另一个问题是 - 是否以某种方式 可以获取在搜索中找到的所有对象的 id,
这样我就可以自己执行查询,只需将 AND 添加到我的 WHERE 条件
SELECT * FROM `messages` WHERE
(
restricted=0 OR id in ( select distinct message_id from groups_messages where group_id in (2,3,4,5,6,1) )
)
AND id in (ids_of_the_messages_found_by_thinking_sphinx)
我想象没有 LEFT JOIN 的查询和添加 AND 到 WHERE 对 mysql 来说会有点资源密集,但如果有其他解决方案 不可能,那么就可以了
谢谢,
帕维尔·K
【问题讨论】:
标签: ruby-on-rails mysql thinking-sphinx