このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/295
#  複数のデータベースからデータを取り出したいのですが 
#  似たようなデータが並んでいて、SELECTと同じようにコンマ区切りでやれば・・・と思い、 
#  SELECT * FROM A,Bと 
#  してみたのですが、取り出せず、 
#  SELECT * FROM A B 
#  としたのですが、Aのデータしか取り出せません。 
#  どのようにすれば両方のデータを取り出せるのでしょうか。 
#  共通のキーでくっつけるではなく、 
#   
#  A あほ 
#  A ばか 
#  A あほ 
#  A あほ 
#  B あほ 
#  B ばか 
#  B ばか 
#  B あほ 
#   
#  のように取り出したいのです。 
# 
# 

'複数のデータベースからデータを取り出したいのですが 
似たようなデータが並んでいて、SELECTと同じようにコンマ区切りでやれば・・・と思い、 
SELECT * FROM A,Bと 
してみたのですが、取り出せず、 
SELECT * FROM A B 
としたのですが、Aのデータしか取り出せません。 
どのようにすれば両方のデータを取り出せるのでしょうか。 
共通のキーでくっつけるではなく、 
 
A あほ 
A ばか 
A あほ 
A あほ 
B あほ 
B ばか 
B ばか 
B あほ 
 
のように取り出したいのです。'(_値ならび) :-
        テーブルの引数ならびを得る(テーブルA,_,_Aの引数ならび),
        テーブルの引数ならびを得る(テーブルB,_,_Bの引数ならび),
        テーブルAを取り出す(_Aの引数ならび,_Aを取り出す条件,_値ならび),
        テーブルBを取り出す(_Bの引数ならび,_Bを取り出す条件,_値ならび).

テーブルAを取り出す(_引数ならび,_取り出す条件,_値ならび) :-
        P =.. [テーブルA|_引数ならび],
        call(P),
        call(_取り出す条件).

テーブルBを取り出す(_引数ならび,_取り出す条件,_値ならび) :-
        P =.. [テーブルB|_引数ならび],
        call(P),
        call(_取り出す条件).

テーブルの引数ならびを得る(_テーブル名,_属性名ならび,_引数ならび) :-
        setof([_属性位置,_属性名,_],[_テーブル名,_属性位置,_属性名] ^ (
                    テーブル構造(_テーブル名,_属性位置,_属性名)),LL),
        第二要素のみ取り出す(LL,_属性名ならび),
        第三要素のみ取り出す(LL,_引数ならび).

第二要素のみ取り出す([],[]).
第二要素のみ取り出す([[_,A|_]|R1],[A|R2]) :-
        第二要素のみ取り出す(R1,R2).

第三要素のみ取り出す([],[]).
第三要素のみ取り出す([[_,_,A|_]|R1],[A|R2]) :-
        第三要素のみ取り出す(R1,R2).