0

如果有帮助,我正在使用 Opencart 购物车,并且我在报告-产品-购买页面中显示了一个额外的列。
我可以使用以下代码显示每个类别的商品数量以及总成本...

SELECT COUNT( DISTINCT op.model ) AS quantity, SUM( op.total + op.total * op.tax /100 ) AS total  
FROM `order_product` op  
LEFT JOIN `product_to_category` ptc 
    ON ( op.product_id = ptc.product_id )  
WHERE ptc.category_id =192  
   OR ptc.category_id =177  
GROUP BY category_id  

这将显示来自某个类别的 7 个项目,总计 135.00 和来自另一个类别的 5 个项目,总计 105.00

数量 合计
7 135.00
5 105.00

但是我在显示另一个名为category的表中的类别名称之后,它会像这样显示

类别 数量 总计
女性 7 135.00
男性 5 105.00

我尝试使用 LEFT JOIN 将 *product_to_category* 链接到类别,但我只是这方面的新手,所以任何帮助都会很棒;)

4

2 回答 2

0

您只需要加入类别表并添加您的姓名。

SELECT c.name
    , COUNT( DISTINCT op.model ) AS quantity
    , SUM( op.total + op.total * op.tax /100 ) AS total
FROM order_product op
LEFT JOIN product_to_category ptc 
    ON op.product_id = ptc.product_id
LEFT JOIN category_description c
    on ptc.category_id = c.category_id
WHERE ptc.category_id =192
    OR ptc.category_id =177
GROUP BY ptc.category_id, c.name

由于您是 JOIN 的新手,因此这里是对连接的有用解释

SQL 连接的可视化解释

于 2012-05-09T17:33:48.077 回答
0

将类别描述(无论它的名称是什么)添加到选择和分组依据。如果未包含在选择中,则不需要 group by 中的 product_id。

SELECT ptc.CategoryDescription, COUNT( DISTINCT op.model ) AS quantity,
       SUM( (op.total+op.total) * op.tax/100 ) AS total
FROM order_product op
LEFT JOIN product_to_category ptc ON ( op.product_id = ptc.product_id )
WHERE ptc.category_id =192
OR ptc.category_id =177
GROUP BY ptc.CategoryDesription
于 2012-05-09T17:38:36.030 回答