このディレクトリの索引

# 出典 :: SQL質疑応答スレ 12問目 #147 # 特定のidが持つintカラムから最も近いかつ小さい数字を持つidを求めたいのですが、 # # select id from t1 where int_col < (select int_col from t1 where id=特定のid) order by int_col desc # でできたのですが # もっとよいSQLありませんか? # # '特定のidが持つintカラムより小さく、かつ最も近い数字を持つidを求める'(_特定のid,_求めるid) :- '特定のidが持つintカラム(_特定のid,_int_col), 'より小さく、かつ最も近い数字を持つidを求める'(_int_col,_int_col_x,_求めるid). '特定のidが持つintカラム(_特定のid,_int_col) :- t1(_特定のid,_int_col). 'より小さく、かつ最も近い数字を持つidを求める'(_int_col,_int_col_x,_求めるid) :- 'より小さく、かつ最も近い数字を持つ(_int_col,_最も近い_int_col), 'idを求める'(_最も近い_int_col,_求めるid). 'より小さく、かつ最も近い数字を持つ'(_int_col,_最も近い_int_col) :- findmax(_int_col_x,'特定のidが持つintカラムより小さく、'(_int_col,_int_col_x),_最も近い_int_col). '特定のidが持つintカラムより小さく、'(_int_col,_int_col_x) :- t1(_id_x,_int_col_x), _int_col_x < _int_col. 'idを求める'(_最も近い_int_col,_求めるid) :- t1(_求めるid,_最も近い_int_col). findmax(A,B,C) :- findall(A,B,L), max_list(L,C).