Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在结果字段上联接两个select查询_Php_Mysql_Select_Join_Union - Fatal编程技术网

Php 在结果字段上联接两个select查询

Php 在结果字段上联接两个select查询,php,mysql,select,join,union,Php,Mysql,Select,Join,Union,我正在尝试加入一个字段“min”上的查询结果,该字段是事件的hour:min。我在一个查询中有两个不同的select查询,我正在尝试UNION(这可能不对,只是尝试了不同的东西,我发现MySQL文档很难阅读) 所以我想要 H:M,然后是addCount和projectsNum的结果-因此每小时/分钟我都有统计数据 我哪里做错了 ( SELECT DATE_FORMAT(`when`, '%H:%i') as `min`, COUNT(`ipAddress`) AS `addCou

我正在尝试加入一个字段“min”上的查询结果,该字段是事件的hour:min。我在一个查询中有两个不同的select查询,我正在尝试UNION(这可能不对,只是尝试了不同的东西,我发现MySQL文档很难阅读)

所以我想要

H:M,然后是
addCount
projectsNum
的结果-因此每小时/分钟我都有统计数据

我哪里做错了

(
SELECT
    DATE_FORMAT(`when`, '%H:%i') as `min`,
    COUNT(`ipAddress`) AS `addCount`
FROM `metric` m 
WHERE `when` BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR) AND NOW()
GROUP BY DAY(`when`), HOUR(`when`), MINUTE(`when`)
)
UNION
(
SELECT
    DATE_FORMAT(v.`created`, '%H:%i') as `min`,
    COUNT(v.`projID`) as `projectsNum`
FROM `projects` v
WHERE v.`created` BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR) AND NOW()
GROUP BY DAY(v.`created`), HOUR(v.`created`), MINUTE(v.`created`)
) 

UNION
只是将一组结果附加到另一组结果

您需要将第二个查询用作子查询:

SELECT
    DATE_FORMAT(`when`, '%H:%i') as `min`,
    COUNT(`ipAddress`) AS `addCount`,
    projects_subquery.`projectsNum`
FROM `metric` m
JOIN (

    SELECT
        DATE_FORMAT(v.`created`, '%H:%i') as `min`,
        COUNT(v.`projID`) as `projectsNum`
    FROM `projects` v
    WHERE v.`created` BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR) AND NOW()
    GROUP BY DAY(v.`created`), HOUR(v.`created`), MINUTE(v.`created`)

) AS projects_subquery ON projects_subquery.`min` = m.`min`
WHERE `when` BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR) AND NOW()
GROUP BY DAY(`when`), HOUR(`when`), MINUTE(`when`)

这个查询可能执行得很糟糕。我只是从原始查询中强制粘贴副本,以使其语法正确,但必须有一种方法对其进行优化。

请识别代码并使其可读;)谢谢,但似乎与数据不符。每分钟都有相同的项目。另外,m.
min
必须只有我
min
才能工作。“每分钟都有相同的
projectsNum
”:这是正常的检查内部查询(以前是您的“第二个”查询)的
groupby
子句。这只返回一个结果(因此,对于给定的
min
,只有一个
projectsNum
)。请仅检查此查询的结果。我不确定您关于
m.min
的意思,请您重新措辞好吗?请同时提供您预期结果的(手工制作)样本,因为我对此也有点困惑。