このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1274791771/311
#  すみません、教えてください。 
#   
#  テーブルAとテーブルBがあり、 
#  テーブルAには、1〜1000万までの連番を格納しています。連番はキーです。 
#  テーブルBの方には、その連番の開始値と連番数が格納されています。 
#   
#  開始値 | 連番数 
#  --------------- 
#    1001 | 100   ←1001から1100までの意味 
#    5001 | 100   ←5001から5100までの意味 
#    9001 | 100   ←9001から9100までの意味 
#   
#  テーブルBで指定されている連番に一致するレコードを 
#  テーブルAから取得するにはどのように書けばよいでしょうか。 
#  上記の例だと300件取得する形になりますが、 
#  テーブルBにも1万件程度のレコードがあります。 
#   
#  DBMSはOracle10gです。 
# 
# 

テーブルBで指定されている連番に一致するレコードをテーブルAから取得する(_一致するレコードならび) :-
        P =.. [テーブルA,_連番|_付加情報],
        findall([_連番|_付加情報],(
                    テーブルB(_開始値,_連番数),
                    for(_開始値,_連番,_開始値 + _連番数 - 1),
                    call(P)),
                _一致するレコードならび).