如何显示3个表中的数据?

时间:2012-05-09 17:29:36

标签: sql opencart

如果有帮助,我正在使用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&共有105件来自其他类别的5件商品

  

数量合计
  7个135.00
  5 105.00

但我在显示另一个名为 category 的表中的类别名称之后,它显示如下

  

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

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

2 个答案:

答案 0 :(得分: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这是一个有用的连接解释

A Visual Explanation of SQL Joins

答案 1 :(得分:0)

将类别说明(无论名称是什么)添加到select和group by。如果未包含在选择中,则不需要group_中的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