このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1294641578/718
#  最後から任意の件数を問い合わせたいのですが 
#  select time from test order by time desc offset 0 limit 3;で 
#  呼び出すと下記のようになりますが 
#   
#  time         
#  ------------------ 
#  2011-11-28 08:20:16  
#  2010-10-26 06:20:16   
#  2009-09-24 04:20:16   
#   
#   
#  ↓のように更にソートして呼び出すにはどう書けばよいのでしょうか? 
#  time            
#  ------------------ 
#  2009-09-24 04:20:16  
#  2010-10-26 06:20:16  
#  2011-11-28 08:20:16  
# 
# 

'最後から任意の件数を問い合わせる'(_任意の件数,L) :-
        テーブル構造の取得(test,time,P,_time),
        全テーブルの取得(P,_time,LL1),
        最後から任意の件数を取り出す(_任意の件数,LL1,L).

テーブル構造の取得(_テーブル名,_鍵名,P,_項) :-
        findall(_,(
                    テーブル定義(_テーブル名,_,_)),
                L),
        テーブル定義(_テーブル名,_項番号,_鍵名),
        nth1(_項番号,L,_項),
        P =.. [_テーブル名|L].

全テーブルの取得(P,_time,LL1) :-
        findall([_time],(
                    P),
                LL1).

逆順に整列(LL1,LL2) :-
        sort(LL1,LL3),
        reverse(LL3,LL2).

最後から任意の件数を取り出す(_任意の件数,LL,L) :-
        length(LL3,_任意の件数),
        append(LL3,_,LL2),
        逆順に整列(LL1,LL2),
        member(L,LL3).