重複の可能性:
複数の結合されたテーブル値が選択基準を満たす行を選択する方法は?
Users
テーブルと、各Optons
ユーザーのいくつかのオプションを含むテーブルがあります。各ユーザーは、複数のオプションを選択できます。
テーブルは次のようになります。
-- this is where user names are stored
create table Users
(
ID int,
UserName varchar(255)
)
-- this table contains options
-- (one flag per row)
create table Options
(
ID NOT NULL AUTO_INCREMENT int,
Flag int,
User_ID int // foreign key
)
2 つの特定のオプションが設定されているすべてのユーザーを取得したいのですが、両方が設定されている場合に限ります。
たとえば、これはオプションのいずれかが設定されているユーザーを返します。
-- find all users with flags 1 and 2 set
select u.UserName from Users u
inner join Options o on o.User_ID = u.ID
where o.Flag in (1, 2)
Options
テーブルに 2 つのエントリ (フラグ 1 と 2) を持つすべてのユーザーを返すにはどうすればよいですか?