このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/968
#   
#  テーブル A: フィールド t, r 
#  テーブル B: フィールド p, t 
#   
#  テーブル B から p の値を指定して t の値を読み込みたいです。 
#  これだけなら select t from B where p = hoge で済むと思います。 
#   
#  さらに条件を追加して、テーブルAにおいて t の値がそれに等しいようなレコードの数が最小なものを選ぶにはどのようにすればよいでしょうか? 
#   
#  例えば 
#  テーブルAが (0, 1), (0, 2), (0, 3), (1, 1), (1, 2) 
#  テーブルBが (0, 0), (0, 1), (1, 0), (1, 1), ... 
#  となっていたら 
#  (0), (1) 
#  ではなく 
#  (1) 
#  だけを得たいです。 
#   
# 

'テーブル A: フィールド t, r  テーブル B: フィールド p, t  テーブル B から p の値を指定して t の値を読み込み  テーブルAにおいて t の値がそれに等しいようなレコードの数が最小なものを選ぶ'(_p,_t) :-
        findall([Count,_t],(
                    'B'(_p,_t),
                    count('A'(_t,_r),Count)),
                L),
        min(L,[Count,_]),
        member([Count,_t],L).