PostgreSQL, где все в массиве
Какой самый простой и быстрый способ получить предложение, где все элементы в массиве должны совпадать, а не только один при использованииIN
? Ведь он должен вести себя какmongodb 's $ all.
Думая о групповых беседах, где разговор_пользователей является таблицей соединения между разговорным_идентификатором и user_id, я имею в виду что-то вроде этого:
WHERE (conversations_users.user_id ALL IN (1,2))
UPDATE 16.07.12
Добавление дополнительной информации о схеме и случае:
The join-table is rather simple:
Table "public.conversations_users"
Column | Type | Modifiers | Storage | Description
-----------------+---------+-----------+---------+-------------
conversation_id | integer | | plain |
user_id | integer | | plain |
A conversation has many users and a user belongs to many conversations. In order to find all users in a conversation I am using this join table.
In the end I am trying to figure out a ruby on rails scope
that find's me a conversation depending on it's participants - e.g.:
scope :between, ->(*users) {
joins(:users).where('conversations_users.user_id all in (?)', users.map(&:id))
}
UPDATE 23.07.12
Мой вопрос о поиске точного соответствия людей. Следовательно:
Разговор между(1,2,3)
не будет совпадать при запросе(1,2)