mysql中一个表中的多列计数

mysql中一个表中的多列计数,mysql,join,count,Mysql,Join,Count,我一共有3张桌子 tbl_项目,tbl_缺陷,tbl_缺陷历史 我需要显示每个项目共3个计数 1.每个项目的总缺陷-这来自tbl_缺陷 无效的总计数,重复的总计数-这来自错误历史记录 输出应采用以下示例格式 项目名称|总缺陷|无效|重复| 项目一| 5 | 6 | 7| 请帮助我定义以下表格结构 CREATE TABLE IF NOT EXISTS `tbl_bug` ( `id` int(10) NOT NULL AUTO_INCREMENT, `project_id` int(10) N

我一共有3张桌子

tbl_项目,tbl_缺陷,tbl_缺陷历史

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

1.每个项目的总缺陷-这来自tbl_缺陷

无效的总计数,重复的总计数-这来自错误历史记录 输出应采用以下示例格式

项目名称|总缺陷|无效|重复|

项目一| 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_错误的数据 正在转储表tbl_bug_历史记录的数据 表tbl_项目的转储数据
试试这个。我想这是你的预期输出


您的预期输出中有错误的计数是的,我得到了错误的输出选择proj.id,proj.projectname,countbugtbl.id作为totalbug,从tbl_bug_历史记录中选择countid,其中bug_id=bugtbl.id,status='invalid'作为来自tbl_项目项目的invalidcount项目左加入bugtbl上的tbl_bug bugtbl.project_id=proj.id按项目名称分组。。。。。。。此查询将项目1的无效计数设为1。但实际结果应该是2。谢谢,它正在工作。如果我在tbl_bug_历史记录中再添加一个field call field_值,则条件应如下:状态=无效,字段值=20,状态=重复,字段值=90。。请建议我需要做哪些更改。。再次感谢Charvee shah:将在bugHistory.status中的“无效”和“重复”行中进行更改。而不是写这一行bugHistory.status='invalid'和field_value=20或bugHistory.status='duplicate'和field_value=90Hi Charvee shah。。你能为下面的问题提供一个解决方案吗
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 ; 
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 ; 
INSERT INTO `tbl_projects` (`id`, `projectname`) VALUES 
(1, 'project-one'), 
(2, 'project-two'), 
(3, 'project-three'), 
(4, 'project-four');