このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/597
#  下記のようなデータがあるとき、投票回数が3以上に該当する投票者の 
#  レコードを全て除いた結果が欲しいのですがどのようにしたらよいでしょうか? 
#  595ですがすみません重要なカラムを省いていました。 
#  その投票者を省くのはそのアンケートNoだけに限定したいのです 
#   
#  アンケートNo ,投票者 ,投票回数, 誰に投票したか 
#  ------------------------------- 
#  1   , A   , 1   , D 
#  1   , B   , 1   , E 
#  1   , B   , 2   , F 
#  1   , B   , 3   , G 
#  1   , C   , 2   , H 
#  1   , C   , 2   , I 
#  2   , A   , 1   , D 
#  2   , B   , 1   , E 
#  2   , C   , 1   , H 
#  2   , C   , 2   , I 
#  2   , C   , 3   , J 
#   
#  欲しいデータ 
#  1   , A   , 1   , D 
#  1   , C   , 2   , H 
#  1   , C   , 2   , I 
#  2   , A   , 1   , D 
#  2   , B   , 1   , E 
#   
# 

'投票回数が3以上に該当する投票者のレコードを全て除いた結果'(_アンケートNo,_投票者,_投票回数,_誰に投票したか) :-
        findsetof([_アンケートNo,_投票者],(
                    データ(_アンケートNo,_投票者,_投票回数,_誰に投票したか),
                    _投票回数 >= 3),
                L),
        データ(_アンケートNo,_投票者,_投票回数,_誰に投票したか),
        \+(member([_アンケートNo,_投票者],L)).

findsetof(A,B,L) :-
        findall(A,B,C),
        setof(A,member(A,C),L).