使用左连接从多个表中获取计数

时间:2012-02-10 05:37:59

标签: mysql count left-join

我使用以下查询从多个表中获取计数: -

SELECT 
  b.sales_title,
  c.cat_name,
  count(b.sales_id) as cnt,
  count(e.comment_id) as coun  
FROM tb_sale_report a 
  inner join tbl_sales    b on a.sales_id=b.sales_id 
  inner join  tb_category c on c.cat_id=b.category_id 
  left  join tb_comment   e on b.sales_id=e.sales_id
GROUP BY b.sales_title

我正在努力实现

sales_title |   cat_name    |   cnt  |  coun
--------------------------------------------------
Affiliate   |   Kids toys   |   8    |  0
Date Check  |   Handbags    |   26   |  1
Date Date   |   My Category |   4    |  1
Future Date |   Handbags    |   3    |  0
Giovanni    |   Kids toys   |   4    |  1

但是我没有得到错误的计数,列coun的值就像这样出错了,

sales_title  |  cat_name    |   cnt  |  coun
---------------------------------------------
Affiliate    |  Kids toys   |   8    |  0
Date Check   |  Handbags    |   26   |  26
Date Date    |  My Category |   4    |  4
Future Date  |  Handbags    |   3    |  0
Giovanni     |  Kids toys   |   4    |  4

如何编写查询以实现我的目标。需要帮助,我是编程新手。谢谢提前

1 个答案:

答案 0 :(得分:1)

除非您告诉我们您的表格结构/提供一小段数据来复制您的问题,否则很难说清楚。看起来您的注释表正在被复制,以便执行到tbl_sales表的连接,因此计数中存在重复项。

尝试使用COUNT(DISTINCT e.comment_id) as coun来解决此问题。