このディレクトリの索引

# 出典 :: SQL質疑応答スレ 11問目 #520 # SQLiteを使っています。 # # 顧客A(顧客idは100)さんの最新の購入物を表示したいのですが、 # select 顧客.顧客名, 購入物.顧客名 from 顧客 natural join 購入物 where 顧客id=100 order by 購入日 desc limit 1; # # っていま書いていますが、無駄が多い気がします。 # これを手直していただきたいのですが、よろしくお願いします。 # # 顧客(100,'A'). 購入物(100,'ORACLE Ver3.0','19840331'). 購入物(100,'Prolog-KABA','19841201'). '顧客A(顧客idは100)さんの最新の購入物を表示する'(_id,_顧客名,_最新の購入物) :- 顧客(_id,_顧客名), 最新の購入日(_id,_最新の購入日), 最新の購入物(_id,_最新の購入日,_最新の購入物). 最新の購入日(_id,_最新の購入日) :- setof(_購入日,[_購入日,_購入物] ^ 購入物(_id,_購入物,_購入日),_購入日ならび), last(_購入日ならび,_最新の購入日). 最新の購入物(_id,_最新の購入日,_最新の購入物) :- findall(_購入物,( 購入物(_id,_購入物,_最新の購入日)),LL), last(LL,_最新の購入物). ?- '顧客A(顧客idは100)さんの最新の購入物を表示する'(100,_顧客名,_最新の購入物). _顧客名 = 'A', _最新の購入分 = 'Prolog-KABA'.