このディレクトリの索引

# 出典 :: SQL質疑応答スレ 10問目 #753 # ../test/read.cgi/db/1274791771/4のような状況で、 # よくある質問1 # # (問) # ID | DATE     | DATA # --+----------+----- # 1 | 2007-11-11 | aaa # 2 | 2007-11-11 | bbb # 1 | 2007-11-10 | ccc # 3 | 2007-11-12 | ddd # 3 | 2007-11-11 | eee # 4 | 2007-11-10 | fff # 1 | 2007-11-12 | ggg # # # 各IDごとにランダムで2件抽出して、そのDATEを # 現在の日時に更新するにはどうすればよいでしょうか? # 'TableName'(1,'2007-11-11',aaa). 'TableName'(2,'2007-11-11',bbb). 'TableName'(1,'2007-11-10',ccc). 'TableName'(3,'2007-11-12',ddd). 'TableName'(3,'2007-11-11',eee). 'TableName'(4,'2007-11-10',fff). 'TableName'(1,'2007-11-12',ggg). '各IDごとにランダムに2件抽出して、そのDATEを現在の日時に更新する' :- forall( '各IDごとに'(_ID), 'ランダムに2件抽出して、そのDATEを現在の日時に更新する'(_ID)). '各IDごとに'(_ID) :- setof(_ID,[_DATE,_DATA] ^ 'TableName'(_ID,_DATE,_DATA),_IDならび), member(_ID,_IDならび). 'ランダムに2件抽出して、そのDATEを現在の日時に更新する'(_ID) :- findall([_ID,_DATE,_DATA],'TableName'(_ID,_DATE,_DATA),LL1), 'ランダムに2件抽出して、現在時刻に更新'(LL1). 'ランダムに2件抽出して、現在時刻に更新'(LL1) :- random_select([_1,_2,_3],LL1,LL2),現在時刻に更新(_1,_2,_3), random_select([_4,_5,_6],LL2,_),現在時刻に更新(_4,_5,_6),!. 'ランダムに2件抽出して、現在時刻に更新'(_). 現在時刻に更新(_ID,_DATE,_DATA) :- '現在の年-月-日'(_年_月_日), retract('TableName'(_ID,_DATE,_DATA)), assertz('TableName'(_ID,_年_月_日,_DATA)),!. '現在の年-月-日'(_年_月_日) :- date(date(_年,_月,_日)), M1 is _月 // 10, M2 is _月 mod 10, N1 is _日 // 10, N2 is _日 mod 10, swritef(S,'%w-%w%w-%w%w',[_年,M1,M2,N1,N2]), string_to_atom(S,_年_月_日). :- dynamic('TableName'/3).