我有三张桌子:
sales
,即从商店购物items
,这是商店携带的所有商品sale_items
,将sales
与该销售中购买的items
相关联。因此,sale_items
中的一行同时包含sale_id
和item_id
。查找包含与给定sales
对应的sale_item
的所有item
的最有效方法是什么?
我的第一个猜测是
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_items
具有相同的item
,那么sale
会被多次计算。这不是我想要的 - 我只想自己计算sales
。
这样做的最佳方式是什么?
答案 0 :(得分:2)
听起来您想要查找包含特定项目的销售数量:
SELECT count(distinct(sale_id)) FROM sale_items
WHERE item_id='<your_item_id>'