このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1252492296/933
#  DEFENDANT  GUILT  JOROR  
#  -----------+-------+--------  
#  HOGE      | 1     | FOO  
#  HOGE      | 0     | BAR  
#  HOGE      | 1     | BAZ  
#  FUGA     | 1     | FOO  
#  FUGA     | 1     | BAR  
#  FUGA     | 1     | BAZ     (T_JUDGEテーブル)  
#   
#  上記のテーブルにDEFENDANTで絞込をかけた結果、GUILTに一つでも0がある場合  
#  1行も取得せず、全部1の場合はそのまま一覧を返す場合どのようなSQLを書けば  
#  よいでしょうか?この場合、HOGEで絞り込むと0行、FUGAなら3行と言う具合です。  
#   
#  DBMSはMySQL5.0.67です。  
# 
# 

'T_JUDGEテーブル'('HOGE',1,'FOO').  
'T_JUDGEテーブル'('HOGE',0,'BAR').  
'T_JUDGEテーブル'('HOGE',1,'BAZ').  
'T_JUDGEテーブル'('FUGA',1,'FOO').  
'T_JUDGEテーブル'('FUGA',1,'BAR'). 
'T_JUDGEテーブル'('FUGA',1,'BAZ').

'T_JUDGEテーブルにDEFENDANTで絞込をかけた結果、GUILTに一つでも0がある場合1行も取得せず、全部1の場合はそのまま一覧を返す'(_DEFENDANT,_GUILT,_JOROR) :-
        findsetof(_DEFENDANT,('T_JUDGEテーブル'(_DEFENDANT,_GUILT,_JOROR),\+(_GUILT=0)),L1),
        findsetof(_DEFENDANT,('T_JUDGEテーブル'(_DEFENDANT,_GUILT,_JOROR),_GUILT=0),L2),
        差集合(L1,L2,L3),
        member(_DEFENDANT,L3),
        T_JUDGEテーブル(_DEFENDANT,_GUILT,_JOROR).