【问题标题】:Count of multiple columns from a table in mysqlmysql中表中多列的计数
【发布时间】:2015-02-18 18:48:47
【问题描述】:

我总共有 3 张桌子

tbl_projects,tbl_bug,tbl_bug_history

我需要为每个项目显示总共 3 个计数。

1.total bug for each projects - 这是来自tbl_bug

  1. “无效”总计数,“重复”总计数——这是来自错误历史记录

输出应采用以下示例格式


项目名称 |总错误 |无效 |重复 |


项目一 | 5 | 6 | 7 |

请帮我定义下面的表结构

CREATE TABLE IF NOT EXISTS `tbl_bug` ( 
`id` int(10) NOT NULL AUTO_INCREMENT, 
`project_id` int(10) NOT NULL, 
`bugname` varchar(250) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; 

转储表tbl_bug的数据

INSERT INTO `tbl_bug` (`id`, `project_id`, `bugname`) VALUES 
(1, 1, 'first-bug'), 
(2, 1, 'second-bug'), 
(3, 1, 'bug-third'), 
(4, 1, 'bug-four'), 
(5, 1, 'bug-give'), 
(6, 1, 'master-bug'), 
(7, 2, 'error-notice'), 
(8, 3, 'invalid bug'), 
(9, 4, 'insufficinet memory'), 
(10, 4, 'hello bug'); 

CREATE TABLE IF NOT EXISTS `tbl_bug_history` ( 
`id` int(10) NOT NULL AUTO_INCREMENT, 
`bug_id` int(10) NOT NULL, 
`status` varchar(100) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ; 

转储表tbl_bug_history的数据

INSERT INTO `tbl_bug_history` (`id`, `bug_id`, `status`) VALUES 
(2, 1, 'invalid'), 
(3, 2, 'invalid'), 
(6, 3, 'duplicate'), 
(7, 4, 'feedback'), 
(10, 5, 'duplicate'), 
(11, 6, 'duplicate'), 
(12, 6, 'invalid'), 
(13, 7, 'feedback'), 
(14, 7, 'normal'), 
(15, 8, 'duplicate'), 
(16, 8, 'normal'), 
(18, 9, 'feedback'), 
(19, 10, 'invalid'), 
(20, 10, 'feedback'); 



CREATE TABLE IF NOT EXISTS `tbl_projects` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`projectname` varchar(250) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

转储表tbl_projects的数据

INSERT INTO `tbl_projects` (`id`, `projectname`) VALUES 
(1, 'project-one'), 
(2, 'project-two'), 
(3, 'project-three'), 
(4, 'project-four');

【问题讨论】:

  • 您的预期输出计数错误
  • 是的,我得到了错误的输出
  • select proj.id,proj.projectname,count(bugtbl.id) as totalbug,(select count(id) from tbl_bug_history where bug_id = bugtbl.id and status = 'invalid' ) as invalidcount from tbl_projects proj left join tbl_bug bugtbl on bugtbl.project_id=proj.id group by proj.projectname....... 这个查询将无效计数作为项目一的 1。但实际结果应该是 2。

标签: mysql join count


【解决方案1】:

试试这个。我认为这是你的预期输出。

http://sqlfiddle.com/#!2/1d756/3

【讨论】:

  • 感谢它正在工作。如果我在 tbl_bug_history 中再添加一个字段调用 field_value 并且条件应该像这样 status=invalid 和 field value=20 ,status=duplicate 和 field value=90 .. 请建议我需要做哪些更改.. 再次感谢 Charvee沙阿:)
  • 更改将在 ('invalid','duplicate') 行中的 bugHistory.status 中完成。而不是这个,写这行 "(bugHistory.status = 'invalid' and field_value = 20) 或(bugHistory.status = 'duplicate' and field_value = 90)"
  • 嗨 Charvee shah.. 你能解决以下问题吗stackoverflow.com/questions/29326621/…
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
相关资源
最近更新 更多