В моей базе данных есть две структуры таблиц:
CREATE TABLE `projects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
CREATE TABLE `issues` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` varchar(10) DEFAULT NULL,
`project_id` int(11) DEFAULT NULL,
`name` varchar(32) DEFAULT NULL,
`description` varchar(128) DEFAULT NULL,
`date_created` date DEFAULT NULL,
`type` enum('general','bug','requirement') DEFAULT NULL,
`priority` enum('low','medium','high') DEFAULT NULL,
`status` enum('resolved','open','discarded') DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `project_id` (`project_id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
Я пытаюсь создать оператор выбора, который возвращает имя проекта и количество решенных проблем, связанных с этим проектом. Я создал следующий оператор SQL:
select projects.name, count(*) from projects left join issues on projects.id = issues.project_id where status = 'resolved' group by projects.name
Однако это возвращает только проекты, в которых есть хотя бы одна решенная проблема, мне нужно вернуть также проекты с 0 решенными проблемами.
Прошло много времени с тех пор, как я создал mySQL, кто-нибудь может помочь? Спасибо.
Я думал, что дам больше информации, так как я еще не получил рабочего ответа. Если бы у меня было четыре проекта и одна проблема для каждого проекта, причем две из этих проблем были «решены», я ожидал бы, что запрос вернется:
project_name | count(*)
--------------------------
first_project | 1
second_project | 0
third_project | 0
fourth_project | 1
Однако запрос возвращает только проекты, в которых есть хотя бы одна решенная проблема.
project_name | count(*)
-------------------------
first_project | 1
fourth_project | 1