このディレクトリの索引

# 出典 :: 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)さんの最新の購入物'(_最新の購入物) :- '顧客A(顧客idは100)さんの購入日ならび'(_購入日ならび), 最新の購入物(100,_購入日ならび,_最新の購入物). '顧客A(顧客idは100)さんの購入日ならび'(_購入日ならび) :- '顧客A(顧客idは100)さんの', 購入日ならび(100,_購入日ならび). '顧客A(顧客idは100)さんの' :- 顧客(100,'A'). 購入日ならび(_id,_購入日ならび) :- setof(_購入日,_購入物 ^ 購入物(_id,_購入物,_購入日),_購入日ならび). 最新の購入物(_id,_購入日ならび,_最新の購入物) :- last(_購入日ならび,_最新の購入日), 購入物(_id,_最新の購入物,_最新の購入日). ?- '顧客A(顧客idは100)さんの最新の購入物'(_最新の購入物). _最新の購入物 = 'Prolog-KABA'.