このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/642
#  +---+------+----+ 
#  | id|parent|name| 
#  +---+------+----+ 
#  | 1 | NULL |taro| 
#  | 2 |  1 |jiro| 
#  | 3 |  1 |sabu| 
#  | 4 |  2 |siro| 
#  | 5 |    3 |hana| 
#  +---+------+----+ 
#   
#  上記のようなユーザーID(id)とその親情報(parent)のテーブルで、 
#  指定したIDの子と孫の一覧を取得するにはどうすればいいですか? 
#  1の場合、jiro、sabu、siroを取得したいです。 
#  子と孫の総数だけでもかまいません。 
# 
# 

親子(1,[],taro).
親子(2,1,jiro).
親子(3,1,sabu).
親子(4,2,siro).
親子(5,3,hana).

指定したIDの子と孫の取得(_指定したid,_子と孫ならび) :-
        findsetof(_id,親子(_id,_,_),L),
        append(_,[_指定したid|_],L),
        孫ならびの取得(_指定したid,_孫ならび),
        子ならびの取得(_指定したid,_子ならび),
        append(_子ならび,_孫ならび,_子と孫ならび).

孫ならびの取得(_id2,_孫ならび) :-
        findall(_name,(
                    親子(_id1,_id2,_),
                    親子(_id,_id1,_name)),
                _孫ならび),!.

子ならびの取得(_id2,_子ならび) :-
        findall(_name,親子(_id,_id2,_name),_子ならび),!.