このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/455
#  質問です。 
#  where句が膨大な数の条件式による論理和(OR)で構成されているselect文において、 
#  得られた各レコードがどの条件式によるものかを判断したい場合どのようにするべきですか? 
#   
#  例えば下のようなテーブル(t)に対して 
#  id    name     sex      age 
#  0    tanaka   male    25 
#  1    yamada  female  18 
#  2    suzuki    male    16 
#   
#  select name from t where age < 20 or sex = 'male'; 
#   
#  を発行した場合すべてのnameが得られますが、それぞれのレコードがどの条件式によって得られたものかを判断したいと考えています。 
# 
# 

'膨大な数の条件式による論理和(OR)で構成されているselect文において、得られた各レコードがどの条件式によるものかを判断したい'(_id,_name,_sex,_age,_条件式) :-
        t(_id,_name,_sex,_age),
        条件(_id,_name,_sex,_age,_条件式).

条件式(_id,_name,_sex,_age,age < 20) :- _age < 20,!.
条件式(_id,_name,_sex,_age,sex = male) :- _sex = male,!.