Mysql 如何统一两个SQL查询

Mysql 如何统一两个SQL查询,mysql,sql-server,Mysql,Sql Server,我有两个SQL查询,它们都是单独工作的,但是当我试图统一hem时,我只有问题 问题1: SELECT Day( funct_consumatori.timestamp ) AS numar_zi, ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) AS ore_functionare, ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumat

我有两个
SQL
查询,它们都是单独工作的,但是当我试图统一hem时,我只有问题

问题1:

SELECT Day( funct_consumatori.timestamp ) AS numar_zi, ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) AS ore_functionare, ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) AS consum, ROUND( ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) * pret_energie.pret, 2 ) AS estimare
FROM funct_consumatori
INNER JOIN consumatori ON consumatori.id = funct_consumatori.consumator
INNER JOIN pret_energie ON pret_energie.id =1
WHERE Year( funct_consumatori.timestamp ) = Year(
CURRENT_TIMESTAMP )
AND Month( funct_consumatori.timestamp ) = Month(
CURRENT_TIMESTAMP )
GROUP BY numar_zi DESC
问题2:

SELECT Day( ambienta.timestamp ) AS numar_zi, TRUNCATE( AVG( temperatura ) , 1 ) AS temp_med, MIN( temperatura ) AS temp_min, MAX( temperatura ) AS temp_max, TRUNCATE( AVG( umiditate ) , 1 ) AS umid_medie
FROM ambienta
INNER JOIN consumatori AS c2 ON c2.id = '1'
INNER JOIN pret_energie AS pe ON pe.id = '1'
WHERE Year( ambienta.timestamp ) = Year(
CURRENT_TIMESTAMP )
AND Month( ambienta.timestamp ) = Month(
CURRENT_TIMESTAMP )
GROUP BY numar_zi DESC

我如何基于
numar_zi
(内部一个)来统一它们呢?

我不知道您的表和数据,但下面的SQL可能会起作用

select q1.numar_zi
        ,q1.ore_functionare
        ,q1.consum
        ,q1.estimare
        -- value of q2 start 
        ,q2.numar_zi
        ,q2.temp_med
        ,q2.temp_min
        ,q2.temp_max
        ,q2.umid_medie
from 
    (
    SELECT Day( funct_consumatori.timestamp ) AS numar_zi
    , ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) AS ore_functionare
    , ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) AS consum
    , ROUND( ROUND( ROUND( SUM( funct_consumatori.timp_functionare ) /3600 ) * consumatori.kwh, 3 ) * pret_energie.pret, 2 ) AS estimare
    FROM funct_consumatori
    INNER JOIN consumatori ON consumatori.id = funct_consumatori.consumator
    INNER JOIN pret_energie ON pret_energie.id =1
    WHERE Year( funct_consumatori.timestamp ) = Year(
    CURRENT_TIMESTAMP )
    AND Month( funct_consumatori.timestamp ) = Month(
    CURRENT_TIMESTAMP )
    GROUP BY numar_zi DESC
    ) q1

INNER JOIN

    (
    SELECT Day( ambienta.timestamp ) AS numar_zi
    , TRUNCATE( AVG( temperatura ) , 1 ) AS temp_med
    , MIN( temperatura ) AS temp_min
    , MAX( temperatura ) AS temp_max
    , TRUNCATE( AVG( umiditate ) , 1 ) AS umid_medie
    FROM ambienta
    INNER JOIN consumatori AS c2 ON c2.id = '1'
    INNER JOIN pret_energie AS pe ON pe.id = '1'
    WHERE Year( ambienta.timestamp ) = Year(
    CURRENT_TIMESTAMP )
    AND Month( ambienta.timestamp ) = Month(
    CURRENT_TIMESTAMP )
    GROUP BY numar_zi DESC
    ) q2
on
    q1.numar_zi = q2.numar_zi
请根据您的RDM进行更改(如有必要),但请记住,如果要加入两个查询,请使用以下查询

select t1.Id, t1.Col1, t1.Col2, t2.Id, t2.Col1, t2.Col2 
from 
    (SELECT Id, COUNT(*) AS Col1, Col2 FROM Table2 GROUP BY Id) t1
INNER JOIN -- or, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN .... 
    (SELECT Id, COUNT(*) AS Col1, Col2 FROM Table2 GROUP BY Id) t2
on
    t1.Id= t2.Id

可能重复:代码工作正常,但问题是我只有2行,事实上,从表ambienta查询的internal有2个结果,function\u consumatori查询有31个结果(当月的最后几天)那么,我该怎么做才能从包含每天完整数据的表中获取所有数据,如果在其他表中存在当天的数据,则分配给当前表?没关系,我只需使用
右连接
和一些小的修改,非常感谢alot Raihan,您有我的投票权!