このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/313
#  SET型について質問です。  
#   
#  'りんご', 'みかん', 'ばなな', 'めろん'  
#   
#  のようなfruitという名のフィールドがあった時、  
#  'りんご' と 'ばなな' 両方が含まれているデータを取得したいのですが、どのようにしたら良いでしょうか?  
#   
#  WHERE `fruit` & 5  
#   
#  このようにしたら、 'りんご' または 'ばなな' のいずれかを持つデータが取得されてしまいます。  
#   
#   
#  MySQL5を使用しています。 
#  どなたかご教授お願いしますm(_ _)m 
# 
# 


'りんご, みかん, ばなな, めろん 
のようなfruitという名のフィールドがあった時、
りんご と ばなな 両方が含まれているデータを取得したいのですが、どのようにしたら良いでしょうか?'(_fruit) :-
        テーブル検索の副目標を得る(テーブル1,[fruit],_テーブル定義,_副目標,_値ならび,[_fruit]),
        _副目標,
        'fruitという名のフィールドがあった時、りんご と ばなな 両方が含まれているデータを取得したい'(_fruit).

テーブル検索の副目標を得る(_テーブル名,_鍵名ならび,_テーブル定義,_副目標,_値ならび,_鍵の変数ならび) :-
        テーブル定義の取得(_テーブル名,_テーブル定義,_副目標,_値ならび).
        副目標に鍵を設定する(_テーブル定義,_鍵名ならび,_値ならび,_鍵の変数ならび),!.

テーブル定義の取得(_テーブル名,_テーブル定義,_副目標,_値ならび) :-
        findall([_位置,_属性名],(
                    テーブル定義(_テーブル名,_位置,_属性名)),
               _テーブル定義),
        length(_テーブル定義,Len),
        length(_値ならび,Len),
        _副目標 =.. [_テーブル名|_値ならび].

副目標に鍵を設定する(_,[],_,[]).
副目標に鍵を設定する(_テーブル定義,[_鍵名|R2],_値ならび,[_鍵の変数|R4]) :-
        member([_鍵の位置,_鍵名],_テーブル定義),
        nth1(_鍵の位置,_値ならび,_鍵の変数),
        副目標に鍵を設定する(_テーブル定義,R2,_値ならび,R4).

'fruitという名のフィールドがあった時、りんご と ばなな 両方が含まれているデータを取得したい'(_fruit) :-
        sub_atom(_fruit,_,_,_,りんご),
        sub_atom(_fruit,_,_,_,ばなな).