计算至少包含一个关联项的行

时间:2012-04-21 22:57:50

标签: mysql sql

我有三张桌子:

  • sales,即从商店购物
  • items,这是商店携带的所有商品
  • sale_items,将sales与该销售中购买的items相关联。因此,sale_items中的一行同时包含sale_iditem_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

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

听起来您想要查找包含特定项目的销售数量:

SELECT count(distinct(sale_id)) FROM sale_items
WHERE item_id='<your_item_id>'