组合多个sql语句

时间:2018-03-19 22:03:41

标签: php mysql select inner-join

我目前从我的数据库中有一组工作查询,但我无法想出一种方法将这些查询转换为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网站运行查询。感谢您提供的任何帮助。

1 个答案:

答案 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