このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/429
#  ・DB2 v9.5 
#  ・テーブルの内容 
#  ■テーブル成績 
#  名前,教科コード,点数 
#  ========== 
#  Aさん,1,50 
#  Aさん,2,70 
#  Bさん,3,80 
#   
#  ■テーブル教科 
#  教科コード,教科名 
#  ========== 
#  1,数学 
#  2,国語 
#  3,社会 
#   
#  ・欲しい結果 
#  Aさん,数学,50 
#  Aさん,国語,70 
#  Aさん,社会,0 
#  Bさん,数学,0 
#  Bさん,国語,0 
#  Bさん,社会,80 
#   
#  ・説明 
#  どう結合したら目的の結果が得られるかわかりません。 
#  おしえてくださいますでしょうか。 
# 

成績('Aさん','1',50). 
成績('Aさん','2',70).
成績('Bさん','3',80).

教科('1',数学).
教科('2',国語).
教科('3',社会).

成績の表示 :-
        '成績と教科の結合。ただし、成績がない教科の点数は0とする'(_教科成績ならび),
        append(_,[[[_名前,_教科名,_点数]|R],_教科成績ならび),
        writef('%t,%t,%t\n',[_名前,_教科名,_点数]),
        R = [].

'成績と教科の結合。ただし、成績がない教科の点数は0とする'(_教科成績ならび) :-
        findsetof(_名前,成績(_名前,_,_),_名前ならび),
        findall([_名前,_教科名,_点数],(
                    append(_,[_名前|R],_名前ならび),
                    教科(_教科コード,_教科名),
                    科目成績を得る(_名前,_教科コード,_点数)),
                _教科成績ならび).                    

科目成績を得る(_名前,_教科コード,_点数) :-
        テーブル成績(_名前,_教科コード,_点数),!.
科目成績を得る(_,_,0).