私はUsers
テーブルとテーブルを持っていGroups
ます。ユーザーは「UserInGroup」テーブルを介して複数のグループに属することができ、グループは「GroupTypeId」を持つことができます。
[User]
--------------
Id | Name
1 | Bob
2 | James
[UserInGroup]
-----------------
UserId | GroupId
1 1
1 2
[Group]
Id | Name | TypeId
------------------------
1 | Directors | 1
2 | IT | 1
3 | London | 2
たとえば、「Directors」または「London」ではなく、「Directors」と「London」の両方にいるユーザーを返すクエリを作成したいと思います。ただし、異なる「タイプ」のグループのANDのみを実行し、同じタイプのグループのORを実行します。グループタイプごとに個別のテーブルを作成することはできますが、動的に作成されるため、できません。
理想的には、「Directors」または「IT」および「London」にいるユーザーにクエリを実行できるようにしたいです。
これを行う最も効率的な方法は何ですか?