私は3つのテーブルを持っています:
Shop_Table
shop_id
shop_name
Sells_Table
shop_id
item_id
price
Item_Table
item_id
item_name
Sells_Table
FK を介して item テーブルと shop テーブルを ID にリンクします。各店舗から最も高価なアイテム、つまりフォームの出力を取得しようとしています。
(shop_name, item_name, price)
(shop_name, item_name, price)
(shop_name, item_name, price)
(shop_name, item_name, price)
...
ここで、price は各ショップの最大価格アイテムです。(shop_name, max(price)) を達成できるようですが、item_name を含めようとすると、shop_name のエントリが複数取得されます。私の現在の方法は
create view shop_sells_item as
select s.shop_name as shop, i.item_name as item, price
from Shop_Table s
join Sells_Table on (s.shop_id = Sells_Table.shop_id)
join Item_Table i on (i.item_id = Sells_Table.item_id);
select shop, item, max(price)
from shop_sells_item
group by shop;
ただし、 というエラーが表示されますがitem must appear in the GROUP BY clause or be used in an aggregate function
、それを含めると、各ショップの最大価格が取得されず、代わりに各ショップ、アイテムのペアの最大価格が取得されますが、これは役に立ちません。
また、ビューを使用するのが最善の方法ですか? 単一のクエリで実行できますか?