2017-03-09 14 views
1

私はPowerUseテーブルをMySQLに持っています。これにはID(long int)とtimeRecorded(timeStamp)の2つの重要な列があります。エントリ間にはしばしば長い時間間隔があります。私の目的は、結果を得るためにテーブルを照会して、20分以上の毎分のレコード数を示します。SQL JOIN構文の問題

MySQL: Select All Dates In a Range Even If No Records Presentのおかげで、私は以下の質問に出くわしましたが、私はうまくいかないことを働かせることはできません。誰かが私が作っている明白なエラーを指摘することができますか?私はレンガの壁に頭を打つのを止めることができますか?私はそれがJOINにあることを知っています、私はそれを見ることができません。ありがとう!

select count(PowerUse.id) + 0 as counter, timestamp((PowerUse.timeRecorded div 100)*100) as time 
from PowerUse right join  
(
select date_add(NOW(), INTERVAL -n2.num*10-n1.num MINUTE) as dateb from 
(select 0 as num 
    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) n1, 
(select 0 as num 
    union all select 1 
    union all select 2 
) n2 
as) datea 

on (timestamp(PowerUse.timeRecorded div 100)*100) = dateb.datea 
    group by timeRecorded div 100 ; 

答えて

1

私はあなたの最良のオプションはで別のテーブルを作成することです推測:

  • start_dateの
  • END_DATE

とあなたの範囲でそれを埋める....

参加することができます:

select start_date, count(PowerUse.id) + 0 as counter, timestamp((PowerUse.timeRecorded div 100)*100) as time 
from PowerUse 
right join timeframes on ( timestamp((PowerUse.timeRecorded div 100)*100) >= start_date and timestamp((PowerUse.timeRecorded div 100)*100) < end_date) 
group by start_date 

このようなもの