给定这两个表:
CREATE TABLE `file` (
`id` int(11) NOT NULL,
`file_name` varchar(255) NOT NULL,
`is_base_found` tinyint(1) NOT NULL DEFAULT 0,
`is_target_found` tinyint(1) NOT NULL DEFAULT 0,
`last_run_date` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
和
CREATE TABLE `statistics` (
`id` int(11) NOT NULL,
`file_id` int(11) NOT NULL,
`status` varchar(8) NOT NULL utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
其中file_id是来自file表的引用。我的统计表有以下数据:
| 标识符|文件标识|状态|
| - -|- -|- -|
| 一个|一个|已通过|
| 2个|三个|失败的|
| 三个|三个|已通过|
| 四个|三个|已通过|
使用mysql查询如何在一个查询中获得通过的 status的计数,失败的状态的计数,file_id 的计数(如果不可能,最好的方法是什么)?到目前为止,我所做的就像查询每个状态:
SELECT f.*, COUNT(s.status)
FROM file f
INNER JOIN statistics s
ON f.id = s.file_id
WHERE r.status = "passed"
AND f.file_name LIKE ?
GROUP BY c.file_name
我期望的输出如下所示:
| 档案名称|通过数量|失败次数|运行次数|
| - -|- -|- -|- -|
| ZZZ文件|一个|第0页|一个|
| 范例档案|2个|一个|三个|
- 任何帮助都是非常感谢!*
1条答案
按热度按时间smtd7mpg1#
您似乎需要一个条件聚合,例如