このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/788
#  prd1テーブル 
#   
#  p_id 商品ID 
#  p_name 商品名前 
#  ---- 
#  prd2テーブル 
#   
#  p_id 商品ID 
#  p_date 製造年 
#  ----- 
#  prd3テーブル 
#   
#  p_id 
#  p_date 
#  p_frame 種類1 
#  ---- 
#  prd4テーブル 
#   
#  p_frame 
#  p_pattern 種類2(0又は1が入る) 
#  ---- 
#  prd1の商品IDとprd2の商品IDは1対Nの関係です。 
#  prd1の全商品に対して 

#  prd1に対するprd2を抽出(inner join でも where でも)した以下のテーブル 
#   
#  p_id p_date 
#  1 2001-01-01 
#  1 2001-01-02 
#  2 2001-01-01 
#  2 2001-01-02 
#  2 2001-01-03 
#   
#  に対して、prd3とprd4によって抽出したテーブルを結合するときに 
#  商品IDと製造年をキーに結合したいと思っています。 
#   
#  prd3はちなみに 
#   
#  p_id p_date p_frame 
#  1 2001-01-01 1 
#  1 2001-01-02 2 
#  1 2001-01-03 3 
#  1 2001-01-04 4 
#  3 2001-01-01 5 
#   
#  prd4は、 
#   
#  p_frame p_pattern 
#  1 0 
#  2 1 
#  3 0 
#  4 1 
#  5 1 
#  6 1 
#   
#  p_id p_date SUM(p_pattern_0) SUM(p_pattern_1) というテーブルを抽出したいです。 
#   
#  1 2001-01-01 5 2 
#  1 2001-01-02 3 NULL 
#  2 2001-01-01 NULL NULL 
#   
#  といった感じです。prd1とprd2を結合したモノに、 prd3とprd4を結合したいのです。 
# 

'prd3とprd4によって抽出したテーブルを結合するときに商品IDと製造年をキーに結合する'(_p_id,_p_date,_sum_p_pattern_0,_sum_p_pattern_1) :-
        findsetof([_p_id,_p_date],(
                    prd1(_p_id),
                    prd2(_p_id,_p_date)),
                L1),
        append(_,[[_p_id,_p_date]|_],L1),
        prd3(_p_id,_p_date,_p_frame),
        findsum([_p_pattern_0,_p_pattern_1],(
                    prd4(_p_frame,_p_pattern),
                    p_pattern_x(_p_pattern,_p_pattern_0,_p_pattern_1)),
                [_sum_p_pattern_0,_sum_p_pattern_1]).


p_pattern_x(0,1,0).        
p_pattern_x(1,0,1).