このディレクトリの索引

# 出典 :: SQL質疑応答スレ 9問目 #521 # 販売集計処理について教えてください。 # 商品テーブル # 商品名 販売本数 # ─── ──── # お菓子 # お弁当 # 飲み物 # # 販売履歴テーブル # 商品名 # ─── # 商品テーブルの各商品が、販売履歴テーブルに何件ずつあるかを集計し、 # 商品テーブルの販売本数に記録させたいと思っております(日次処理)。 :- dynamic(商品/2). 商品(お菓子,_). 商品(お弁当,_). 商品(飲み物,_). 販売履歴(飲み物). 販売履歴(お菓子). 販売履歴(お弁当). 販売履歴(お菓子). 販売履歴(お菓子). 販売履歴(飲み物). 販売履歴(お弁当). 販売履歴(お弁当). 販売集計処理 :- 一意な商品名ならびを得る(_一意な商品名ならび), 商品テーブルに追加(_一意な商品名ならび). 一意な商品名ならびを得る(_一意な商品名ならび) :- setof(_商品名,[_商品名,_販売本数] ^ 商品(_商品名,_販売本数),_一意な商品名ならび). 商品テーブルに追加(_一意な商品名ならび) :- forall(商品ごとの販売度数を得る(_一意な商品名ならび,_商品名,_販売度数),商品テーブルを書き換える(_商品名,_販売度数)). 商品ごとの販売度数を得る(_一意な商品名ならび,_商品名,_販売度数) :- member(_商品名,_一意な商品名ならび), 度数(販売履歴(_商品名),_販売度数). 度数(_目標,_度数) :- findall(1,_目標,L), length(L,_度数). 商品テーブルを書き換える(_商品名,_販売度数) :- retractall(商品(_商品名,_)), assertz(商品(_商品名,_販売度数)).