PostgreSQL, где все в массиве

Каков самый простой и быстрый способ получить предложение, в котором все элементы в массиве должны соответствовать -, а не только одному при использовании IN? В конце концов, он должен вести себя как mongodb $all .

Размышляя о групповых беседах, в которых беседа _пользователи представляет собой таблицу соединения между идентификатором беседы _и идентификатором пользователя _, я имею в виду нечто подобное:

WHERE (conversations_users.user_id ALL IN (1,2))

ОБНОВЛЕНИЕ 16.07.12

Добавление дополнительной информации о схеме и случае:

  1. Таблица соединения -довольно проста:

                  Table "public.conversations_users"
         Column      |  Type   | Modifiers | Storage | Description 
    -----------------+---------+-----------+---------+-------------
     conversation_id | integer |           | plain   | 
     user_id         | integer |           | plain   | 
    
  2. У беседы много пользователей, и пользователь принадлежит ко многим беседам. Чтобы найти всех пользователей в разговоре, я использую эту таблицу соединений.

  3. В конце концов, я пытаюсь понять рубин на рельсах scope, который находит мне разговор в зависимости от его участников -, например.:

    scope :between, ->(*users) {
      joins(:users).where('conversations_users.user_id all in (?)', users.map(&:id))
    }
    

ОБНОВЛЕНИЕ 23.07.12

Мой вопрос касается поиска точного совпадения людей. Поэтому:

Разговор между (1,2,3)не будет совпадать, если запрашивается(1,2)

25
задан pex 23 July 2012 в 16:26
поделиться