この質問を組み立てる方法がわからないので、SQL ステートメントをここに直接入れます。
declare @tbl table(Id varchar(4),Userid varchar(10),Name varchar(max),Course varchar(max))
insert into @tbl values
('1','UserID1','UserA','Physics'),
('2','UserID2','UserB','Chemistry'),
('3,','UserID1','UserA','Chemistry')
今、
Chemistry を受講したユーザーのリストを取得するには、次のように記述します。
select * from @tbl where Course='Chemistry'
物理学についても同様に、私は書きます
select * from @tbl where Course='Physics'
問題は、「物理学を受講していない学生のリストを取得する」というクエリを作成しようとしたときです。あまり考えずに書いてみた
select * from @tbl where Course!='Physics'
結果は間違っています(UserAに関する詳細を取得しています-彼は物理学に登録していますが)
Id Userid Name Course
2 UserID2 UserB Chemistry
3, UserID1 UserA Chemistry
これを修正するために、クエリを次のように書き直しましたが、どういうわけかこれは正しい方法ではないと思います。
select * from @tbl where Course!='Physics'
and Userid not in (select Userid from @tbl where Course='Physics')
助けてください!