2016-05-15 126 views
3

请有人可以帮我。我需要加入这两个查询和小时分组。查询结果可能会有很多天。按加入日期排序查询

结果:Query1

SELECT DATE_FORMAT(Venta.fechaImpresion, "%h") AS fechaImpresion2, COUNT(*) AS total 
FROM `Venta` 
WHERE Venta.fechaImpresion LIKE "2016-05-02 %" 
GROUP BY HOUR(Venta.fechaImpresion) , DAY(Venta.fechaImpresion) 
LIMIT 0 , 30 

结果:Query2

SELECT DATE_FORMAT(Venta.fechaImpresion,"%h") as fechaImpresion FROM `Venta` 
where Venta.fechaImpresion >= "2016-05-02" and Venta.fechaImpresion <= "2016-05-09" 
GROUP BY hour(Venta.fechaImpresion) 

,如果我尝试在一个查询中加入的结果是零。

SELECT DATE_FORMAT(Venta.fechaImpresion, "%h") AS fecha, dia1.total AS total1 
FROM `Venta` 
LEFT JOIN (

SELECT DATE_FORMAT(Venta.fechaImpresion, "%h") AS fechaImpresion 
FROM `Venta` 
WHERE Venta.fechaImpresion >= "2016-05-02" 
AND Venta.fechaImpresion <= "2016-05-09" 
GROUP BY HOUR(Venta.fechaImpresion) 
)fecha ON fecha.fechaImpresion = Venta.fechaImpresion 
LEFT JOIN (

SELECT DATE_FORMAT(Venta.fechaImpresion, "%h") AS fechaImpresion2, COUNT(*) AS total 
FROM `Venta` 
WHERE Venta.fechaImpresion LIKE "2016-05-02 %" 
GROUP BY HOUR(Venta.fechaImpresion) , DAY(Venta.fechaImpresion) 
)dia1 ON (dia1.fechaImpresion2 = fecha.fechaImpresion) 
WHERE Venta.fechaImpresion >= "2016-05-02" 
AND Venta.fechaImpresion <= "2016-05-09" 
GROUP BY HOUR(Venta.fechaImpresion) 
+0

即使他们来自不同的日子,你想要加入小时吗? – Nicarus

+0

不,从同一天 – user3259091

+1

您可能想要考虑使用'EXTRACT(DAY_HOUR FROM fechampresion)'为您的JOINs,等。 – Nicarus

回答

0

你可以尝试这样的

选择b.second表列中,*。从第一台,B秒表,其中a.date列= b.date列

0

我会建议为表格使用两个单独的句柄。类似这样的:

SELECT DATE_FORMAT(v1.fechaImpresion, "%h") AS fechaImpresion2, COUNT(v1.*) AS total, DATE_FORMAT(v2.fechaImpresion,"%h") as fechaImpresion 
FROM `Venta` v1, 'Venta' v2 where v1.fechaImpresion = v2.fechaImpresion 

然后,您可以根据需要应用各种日期标准。