0

24 時間すべてのコンバージョンの時間別レポートを取得したいと考えています。このクエリがありますが、24 行ではなく 19 行しか返されません。前もって感謝します。

SELECT   HOUR( `date_time` ) AS Hours, COUNT(conversion_id) AS `conversion` FROM conversions 
RIGHT JOIN (SELECT  0 AS Hour UNION ALL SELECT  1 UNION ALL SELECT  2 UNION ALL SELECT  3 UNION ALL SELECT  4 UNION ALL SELECT  
    5 UNION ALL SELECT  6  UNION ALL SELECT  7 UNION ALL SELECT  8 UNION ALL SELECT  9 UNION ALL SELECT 10 UNION ALL SELECT 11 
    UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL 
    SELECT 18  UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23) AS AllHours 
ON HOUR(date_time) = Hour 
WHERE DATE(date_time) = CURDATE() OR date_time IS NULL 
GROUP BY Hour 
ORDER BY Hour
4

2 に答える 2

1

この時間のエントリがない場合、選択されることはありません。逆にクエリを実行する必要があります。

私はそれが次のようなものであるべきだと思います(データベースなしでテストするのは難しいです):

select * from (SELECT  0 AS Hour UNION ALL SELECT  1 UNION ALL SELECT  2 UNION ALL SELECT  3 UNION ALL SELECT  4 UNION ALL SELECT       5 UNION ALL SELECT  6  UNION ALL SELECT  7 UNION ALL SELECT  8 UNION ALL SELECT  9 UNION ALL SELECT 10 UNION ALL SELECT 11      UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL      SELECT 18  UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL SELECT 23)   as AllHours
left outer join 
    (select  COUNT(conversion_id) as cnt, HOUR(date_time) as h 
     FROM conversions 
     WHERE DATE(date_time) = CURDATE() OR date_time IS NULL 
     group by h) as c 
on Hour = e.h
于 2013-09-19T11:03:20.427 に答える