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

标签 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

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

最佳答案

除非您告诉我们您的表结构/提供一小段可以复制您问题的数据,否则很难判断。看起来您的评论表正在被复制,以便执行与 tbl_sales 表的联接,因此计数中有重复项。

尝试 COUNT(DISTINCT e.comment_id) as coun 来消除此问题。

关于mysql - 使用左连接从多个表中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9223229/

相关文章:

mysql - 合并来自两个不同联结表的数据

mysql - 仅在 MySQL 中插入缺失数据

mysql - Rails 3 - 将多个计数转换为单个查询 - OrderedHash

c - 需要 : Wrappable Counter where < and > do "the right thing"

mysql - 'concat' 两个不同的 COUNT(column) WHERE 列是否可以有两个不同的值和不同的总计?

mysql - 同一 mysql 查询中的左连接和内连接不起作用

mysql - Wordnet SQL 设置

mysql - 在单个查询中多次连接到同一个表?

mysql - 使用 IF 语句根据 LEFT JOIN 获取所有字段

php - 如何将已连接的表与 Laravel 中的其他表连接?