このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/443
#  ひとつのテーブルで各レコードは他のレコードと1:Nの親子関係にあります 
#  コード  親コード データ 
#  1     1     A 
#  2     1     B 
#  3     2     C 
#  4     3     D 
#  5     1     E 
#  6     2     F 
#   
#  まあこんな感じで1以外は全部親を1つ持ち親はひとつ以上の子を持ちます(子が無い親も居ますが) 
#  これである親の子レコード以下を下記のような感じで全部抽出したいのですが 
#  SQLだけで出来ますでしょうか 
#   
#  コード=2のときの抽出結果 
#  コード データ 世代 
#  3    C    1 
#  4    D    2 
#  6    F    1 
#   
#  世代は2から何世代下にいるかです、子なら1孫なら2…ということです 
#   
#  また無理ならこうゆうことを可能にするデータ構造を教えてください 
#  DBはFireBird1.5を想定していますがフリーのDBなら何でも良いです 
#   

ある親の子孫を世代番号とデータ付きですべて調べあげる(_親番号,_コード,_データ,_世代) :-
        子孫(_親番号,_コード,_データ,_世代).

子孫(_親,_子,_データ,1) :- テーブル(_子,_親,_データ).
子孫(A,B,_データ,_世代) :-
        テーブル(C,A,_),
        子孫(C,B,_データ,_世代の二),
        _世代 is _世代の二 + 1.