【问题标题】:combine multiple sql statements合并多条sql语句
【发布时间】:2018-08-28 14:40:28
【问题描述】:

我目前有一组来自我的数据库的工作查询,但我无法想出一种方法将这些查询转换为 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 网站运行查询。

【问题讨论】:

标签: php mysql select inner-join


【解决方案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

【讨论】:

  • 非常感谢它在 1 次小调整后工作,第 3 行应该读取 FROM site s INNER JOIN。我一直在研究这个答案,你的帮助很大!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多