このディレクトリの索引
http://pc11.2ch.net/test/read.cgi/db/1274791771/154
#  質問です。 
#  Oracle10gです。 
#   
#  部門の親子関係を示す以下のようなテーブルがある。 
#   
#  親部門ID 子部門ID 子部門の区分 
#  1       2      0 
#  1       3      1 
#  3       4      0 
#  3       5      1 
#  5       6      0 
#  7       8      0 
#  7       9      1 
#  9       10     0 
#   
#  ある親部門IDを指定し、その部門以下の階層に含まれる部門のうち区分が0となっているものを取得したい。 
#  上の例だと部門ID=1と指定した場合2,4,6を取得したい。 
#   
#  よろしくお願いします。 
# 
# 

'ある親部門IDを指定し、その部門以下の階層に含まれる部門のうち区分が0となっているものを取得したい。'(_親部門ID,_区間が0となっている子部門ID) :-
        部門(_親部門ID,_子部門ID,_子部門の区分),
        その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID,_子部門区分,_区間が0となっている子部門ID).

その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID,0,_子部門ID).
その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID_1,_子部門の区分,X) :-
        部門(_子部門ID_1,_子部門ID_2,_子部門の区分_2),
        その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID_2,_子部門の区分_2,X).