в продукте, который я разрабатываю, у меня есть модель сообщения.
Сообщение может быть ограничено группами или не ограничено (доступно для
каждый).
Если пользователь принадлежит к одной из групп сообщений ИЛИ сообщение не
ограничено, пользователь может видеть сообщение.
вот запрос, выбирающий видимые сообщения (в надежде, что он может
уточнить, что я имею в виду)
(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) )
)
возможно ли как-то применить эту настройку видимости к мышлению
результаты сфинкса? смысл применять это ИЛИ и IN к
Message.search "test" with/with_all
?
если это невозможно, другой вопрос будет - это как-то
можно получить идентификаторы всех объектов, найденных в поиске,
чтобы я мог выполнить запрос сам, просто добавив И в мое ГДЕ
состояние
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)
я представляю как запрос без левого соединения, так и добавление AND в WHERE
будет немного ресурсоемким для MySQL, но если другие решения
не возможно, тогда это будет делать
спасибо,
Павел К