У меня есть 2 таблицы с множеством кардинальных чисел между ними.Итак, путем нормализации я создал это:
User
UserId UserName ....
1 a
2 b
UserObject
UserId ObjectId
1 1
1 2
2 2
Object
ObjectId ObjectName
1 c
2 d
Теперь я хочу выполнить запрос, в котором я хочу узнать пользователей, которые имеют определенные объекты.
Например: все пользователи, у которых есть оба объекта c и d.
Один из способов сделать это
Select userid from UserObject where objectid=1 intersect Select userid from UserObject where objectid= 2
В соответствии с моим вариантом использования, мне может понадобитьсяпоиск пользователей, имеющих комбинацию из 2-7 объектов.Не будет благоразумно писать так много пересечений.
Я работаю над postgesql 9.1.
Каковы другие эффективные возможные способы сделать это?