в продукте, который я разрабатываю, у меня есть модель сообщения.
Сообщение может быть ограничено группами или не ограничено (доступно всем).
Если пользователь принадлежит к одной из групп сообщения ИЛИ сообщение не ограничено, пользователь может увидеть сообщение.
вот запрос, выбирающий видимые сообщения (в надежде, что он прояснит, что я имею в виду)
(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) )
)
можно ли каким-то образом применить этот параметр видимости к результатам мышления сфинкса? смысл применить это ИЛИ и В к
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, но если другие решения невозможны, то это подойдет
Благодарность,
Павел К