users、roles、roles_usersの3つのテーブルがあります(roles_usersは、user_idとrole_idの2つの列を持つリレーショナルテーブルです)
ユーザーは、roles_users テーブルを通じて、多くのロールを持つことができます。
ユーザーが特定の役割を持っている場合、ユーザーを選択しない選択クエリを作成するにはどうすればよいですか。
説明する :
スーパー管理者ユーザーには、スーパー管理者、管理者、ログイン、公開者の役割があります。
管理者ユーザーには、管理者、ログイン、公開者の役割があります。
パブリッシャー ユーザーには、ログイン ロールとパブリッシャー ロールがあります。
スーパー管理者の役割を持たないすべてのユーザーを選択したいと考えています。つまり、ユーザーがスーパー管理者の役割を持っている場合は、それを選択しないでください。
SQL でこれを達成するにはどうすればよいですか?
編集:これが最後に私のために働いたクエリです:(AndrásOttóの回答に感謝します)
SELECT DISTINCT(users.id), users.*
FROM users
INNER JOIN roles_users on users.id = roles_users.user_id
INNER JOIN roles ON roles_users.role_id = roles.id
WHERE NOT EXISTS(SELECT roles_users.user_id FROM roles_users
WHERE roles_users.user_id = users.id AND roles_users.role_id = 2)