logo
当前位置:首 页 > 编程技术 >后端开发 >mysql > 查看文章

MySQL的并表一般都是在数据统计的时候用到比较多,最近做了个项目使用统计报表,多个表使用了多对多的数据库结构,结果在left join的时候,关联的左表字段为多,所以使用count的时候数据不准确

 

使用的脚本是:

SELECT
	`ads`.`custom_province` AS '省份ID',
	count(   ads.id ) AS '统计的数据' 
FROM
	`activity_details` `acd`
	LEFT JOIN `address` `ads` ON `acd`.`address_id` = `ads`.`id`
	LEFT JOIN `materials_configs` `mcon` ON `acd`.`activity_id` = `mcon`.`activity_id` 
WHERE
	( mcon.materials_lists_id IN ( 6, 7, 10, 11 ) ) 
	AND ( ads.activity_id = 26   ) 
GROUP BY
	`ads`.`custom_province`

 

得出结果:

 

 

 

 

结果都是需要是1 但是materials_configs数据库是多的关系,所以统计了4次表,这个情况需要添加关键词 DISTINCT

 

修改后的代码如下:

SELECT
	`ads`.`custom_province` AS '省份ID',
	count( DISTINCT  ads.id ) AS '统计的数据' 
FROM
	`activity_details` `acd`
	LEFT JOIN `address` `ads` ON `acd`.`address_id` = `ads`.`id`
	LEFT JOIN `materials_configs` `mcon` ON `acd`.`activity_id` = `mcon`.`activity_id` 
WHERE
	( mcon.materials_lists_id IN ( 6, 7, 10, 11 ) ) 
	AND ( ads.activity_id = 26   ) 
GROUP BY
	`ads`.`custom_province`

 

 

 

这个结果就正确了

 

 

 

 

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
你可能也喜欢Related Posts
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3