このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/959
#  MySQL 5.1です。 
#   
#  テーブル1 
#  15:30:20 カツ丼 
#  15:35:40 天丼 
#  15:50:15 他人丼 
#   
#  テーブル2 
#  15:30:30 400円 
#  15:35:45 550円 
#  15:51:00 480円 
#   
#  というテーブルがあって、テーブル1と2の時刻が近いものをマッチさせて 
#  15:30:20 カツ丼 400円 
#  15:35:40 天丼 550円 
#  15:50:15 他人丼 480円 
#   
#  のような結果を出したいのですが、どのようにすればいいでしょうか。 
#   
#  よろしくお願いします。 
# 
# 

テーブル1と2の時刻が近いものをマッチさせる(_時刻,_商品名,_価格) :-
        テーブル1(_時刻,_商品名),
        テーブル1と2の時刻が近いもの(_時刻,_時刻以前,_時刻以後),
        時刻が近いものをマッチさせる(_時刻,_時刻以前,_時刻以後,_価格).

テーブル1と2の時刻が近いもの(_時刻,_時刻以前,_時刻以後) :-
        findmax(_時刻_2,(
                    テーブル2(_時刻_2,_価格),
                    _時刻 @>= _時刻_2),
                _時刻以前),
        findmin(_時刻_2,(
                    テーブル2(_時刻_2,_価格),
                    _時刻 @=< _時刻_2),
                _時刻以後).

時刻が近いものをマッチさせる(_,[],_時刻以後,_価格) :-
        テーブル2(_時刻以後,_価格),!.
時刻が近いものをマッチさせる(_,_時刻以前,[],_価格) :-
        テーブル2(_時刻以前,_価格),!.
時刻が近いものをマッチさせる(_時刻,_時刻以前,_時刻以後,_価格) :-
        '時刻を秒単位に変換してから、近い時刻を得る'(_時刻,_時刻以前,_時刻以後,_近い時刻),
        テーブル2(_近い時刻,_価格).

'時刻を秒単位に変換してから、近い時刻を得る'(_時刻,_時刻以前,_時刻以後,_近い時刻) :-
        時刻を秒単位に変換して(_時刻,_秒),
        時刻を秒単位に変換して(_時刻以前,_秒_1),
        時刻を秒単位に変換して(_時刻以後,_秒_2),
        近い時刻を得る(_秒,_時刻以前,_秒_1,_時刻以後,_秒_2,_近い時刻).

時刻を秒単位に変換して(_時_1,_分_1,_秒_1,_秒) :-
        _秒 is 3600 * _時_1 + 60 * _分_1 + _秒_1.

近い時刻を得る(_秒,_時刻以前,_秒_1,_時刻以後,_秒_2,_時刻以前) :-
        abs(_秒_1 - _秒) =< abs(_秒_2 - _秒),!.
近い時刻を得る(_秒,_時刻以前,_秒_1,_時刻以後,_秒_2,_時刻以後).