私は3つのテーブルを持っています:
sales、店舗からの購入ですitems、ストアが運ぶすべてのアイテムですsale_items、その販売で購入したものに関連付けsalesられます。itemsしたがって、の行にはaと。のsale_items両方があります。sale_iditem_id
与えられたものに対応するsalesものを含むすべてを見つけるための最も効率的な方法は何ですか?sale_itemitem
私の最初の推測は
select sale_id, item_id, count(*)
from sales as s
join sale_items as si on si.sale_id=s.id
group by item_id
order by count(*) desc
しかし、与えられたものに同じものsaleが複数ある場合、それは複数回カウントされます。それは私が望んでいることではありません-私は自分自身を数えたいだけです。sale_itemsitemsalesales
これを行うための最良の方法は何ですか?