【发布时间】:2014-10-21 09:35:05
【问题描述】:
我正在尝试计算某件商品的购买次数。但是,我的查询中也计算了一个类别表,这当然会导致错误的数据。如何计算一张表中我需要的行数并只得到这些结果?
MySQL 查询
select
`inventory`.`on_sale`,
`inventory`.`id`,
`inventory`.`sku`,
`inventory`.`name`,
`inventory`.`price`,
`inventory_categories`.`category`,
`inventory`.`stock_quantity`,
COUNT(orders_product.sku) as skuCount
from
`inventory`
left join
`orders_product` ON `orders_product`.`sku` = `inventory`.`sku`
left join
`inventory_categories` ON `inventory`.`sku` = `inventory_categories`.`sku`
group by `inventory_categories`.`category`
order by `skuCount` desc
limit 10000
很难显示我所有的记录,但基本上是这样的:
orders_product.sku = ORDER1234 & ORDER1234 & ORDER891010
inventory_categories.(id)category = (cat1)ORDER1234 & (cat1a)ORDER1234 & (cat1b)ORDER1234 & (cat2)ORDER891010
因此,在我的表格中,它分别显示 skuCount = 5 & 2 而不是分别需要的 2 & 1 结果。如果我没有带有该inventory.id 的订单,那么它会显示0,这是正确的,但是一旦有订单通过,它将计算该订单加上等于该sku 的所有类别。
如果我从我的 join 语句中删除 inventory_categories ,它不会出现任何问题。但是,出于记录目的,查询中需要它。
【问题讨论】:
-
只加入一个没有得到错误结果的计数
-
添加一个sqlfiddle.com 很难理解表格和东西。