このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/628
#  Mysql5を使っています。以下のようなテーブルがある時、 
#  ・table_male(カラム:id/name/address) 
#  ・table_female(カラム:id/name/address) 
#  ・table_X(カラム:id/sex_id/sex/unique_key) ※sex_idはtable_male.idもしくはtable_female.id 
#   
#  クエリA 
#  select `sex`, `sex_id` from table_X where unique_key = $key limit 1; 
#  の結果(sexの値にmaleかfemaleが返る)に応じて 
#  table_maleもしくはtable_femaleからaddressを引き出したいと思います 
#  今まではクエリAのあとに以下のようにしていたんですが、両方をまとめてやることはできないでしょうか? 
#  select `address` from table_male where `id`=$sex_id limit 1; 
#   
#  最初のクエリの取得結果に応じて、続けて実行するクエリの対象テーブルを変更させるということに 
#  なると思うんですが… 
#  よろしくお願いします 
# 
# 

'select `sex`, `sex_id` from table_X where unique_key = $key limit 1; select `address` from table_male where `id`=$sex_id limit 1;'(_uniqkey,_address) :-
        table_x(_id,_sexid,_sex,_uniqkey),
        'maleテーブルまたはfemaleテーブルを参照する'(_sex,_id,_name,_address).

'maleテーブルまたはfemaleテーブルを参照する'(male,_id,_name,_address) :-
        table_male(_id,_name,_address),!.
'maleテーブルまたはfemaleテーブルを参照する'(female,_id,_name,_address) :-
        table_female(_id,_name,_address),!.