我目前从我的数据库中有一组工作查询,但我无法想出一种方法将这些查询转换为1查询效率并保持数据相互关联。 testrecord表包含每行测试的1行数据,包括siteid代码,它是站点表的主键,包含公司名称。
SELECT COUNT(`teststatus`) AS `total tested`
FROM `testrecord`;
SELECT COUNT(`teststatus`) AS `passed`
FROM `testrecord`
WHERE `teststatus` = 0;
SELECT `companyname`
FROM `site`
INNER JOIN testrecord ON `site`.`siteid` = `testrecord`.`siteid`
GROUP BY `site`.`siteid`;
我正在寻找一个返回以下基本格式的查询:
total tested | passed | companyname
-------------+--------+-----------
76 | 68 | company1
156 | 150 | company2
我正在使用MySql并从我的php网站运行查询。感谢您提供的任何帮助。
答案 0 :(得分:1)
你似乎想要这样的东西:
SELECT s.companyname, count(*) as total_tested,
SUM( tr.teststatus = 0 ) as passed
FROM site s INNER JOIN
testrecord tr
ON tr.siteid = s.siteid
GROUP BY s.siteid;
以上假设您正在使用MySQL(反引号建议使用MySQL)。如果没有,则SELECT
应如下所示:
SELECT s.companyname, count(*) as total_tested,
SUM(CASE WHEN tr.teststatus = 0 THEN 1 ELSE 0 END) as passed