このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/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句の使い方はどう理解すれば良いのでしょうか。 
#   

'select * from syain where ''soumu'' in (select busyomei from busyo where busyo.busyoid = syain.busyoid) をどう理解すればよいか'(_id,_name,_bushoid) :-
        社員テーブル(_id,_name,_busyoid),
        findall(_busyomei,部署テーブル(_busyoid,_busyomei),L),
        member(soumu,L).

社員テーブル(1,yamada,100).
社員テーブル(2,satou,100).
社員テーブル(3,suzuki,200).

部所テーブル(100,soumu).
部所テーブル(200,eigyo). 

テーブル構造(社員テーブル,1,id).
テーブル構造(社員テーブル,2,name).
テーブル構造(社員テーブル,3,busyoid).
テーブル構造(部所テーブル,1,busyoid).
テーブル構造(部所テーブル,2,busyomei).