このディレクトリの索引

# 出典 :: SQL質疑応答スレ 10問目 #923 # 初歩的ですみません、相関副問合せでinの仕組みを教えてください。 # # in句の使いかたとして、 # select * from テーブル where フィールド1 in (値1,値2,値3) # みたいな使い方は素直に読めるのですが、 # # # 社員テーブル syain # id | name | busyoid | # ------------------ # 1  | yamada |100 | # 2  | satou |100 | # 3  | suzuki |200 | # # 部署テーブル busyo # busyoid | busyomei | # ------------------ # 100 | soumu | # 200 | eigyo | # # の2つのテーブルで、総務所属の人のみ抽出するとき、 # # select * from syain where 'soumu' in (select busyomei from busyo where busyo.busyoid = syain.busyoid) # # で答えが出るとき、where 'soumu' in(select文)のin句の使い方はどう理解すれば良いのでしょうか。 # 社員テーブル(1,yamada,100). 社員テーブル(2,satou,100). 社員テーブル(3,suzuki,200). 部署テーブル(100,soumu). 部署テーブル(200,eigyo). テーブル構造(社員テーブル,1,id). テーブル構造(社員テーブル,2,name). テーブル構造(社員テーブル,3,busyoid). テーブル構造(部署テーブル,1,busyoid). テーブル構造(部署テーブル,2,busyomei). 'select * from syain where ''soumu'' in (select busyomei from busyo where busyo.busyoid = syain.busyoid) をどう理解すればよいか'(_id,_name,_busyoid) :- 社員テーブル(_id,_name,_busyoid), '''soumu'' in (select busyomei from busyo where busyo.busyoid = syain.busyoid)'(_busyoid). '''soumu'' in (select busyomei from busyo where busyo.busyoid = syain.busyoid)'(_busyoid) :- findall(_busyomei,部署テーブル(_busyoid,_busyomei),L), member(soumu,L).