2011-10-19 14 views
0

私の仕事は時間単位でデータを抽出することです。私は、次のようなコマンドを発行して次の操作を行います。mySQL:結果内の区間間の行の自動挿入

SELECT DISTINCT 
    COUNT(player_id) AS `count`, 
    YEAR(date_created) AS `year`, 
    MONTH(date_created) AS `month`, 
    DAY(date_created) AS `day`, 
    HOUR(date_created) AS `hour` 

FROM `logs` 

WHERE 
    (controller='player') AND 
    (action='updatehash') AND (date_created >= FROM_UNIXTIME(1317916800)) AND 
    (date_created <= FROM_UNIXTIME(1318003199)) 

GROUP BY `year`, `month`, `day`, `hour` 

ORDER BY `year` ASC, `month` ASC, `day` ASC, `hour` ASC 

返す以下のような結果:

Array 
(
    [0] => Array 
     (
      [count] => 2 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 16 
     ) 

    [1] => Array 
     (
      [count] => 5 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 17 
     ) 

    [2] => Array 
     (
      [count] => 21 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 18 
     ) 

    [3] => Array 
     (
      [count] => 3 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 19 
     ) 

) 

結果は、私はそれをリターンを持っていなければならない唯一のことをOKであるように見えますカウント値がない時間も含めて過去24時間の結果。上記の結果に基づいて、10月7日19時から10月6日18時までの結果が返されます。

これは可能ですか?

ありがとう皆さん! ;)

答えて

1

このSQLを使用しないと、テーブルに結合されていないので、「左結合」手法を使用することはできません。その期間に実際にログ記録がないためです。

FUNCTIONアプローチを作成するか、プログラミング言語を使用して少なくとも1つのレコードを毎時挿入することができます。

+0

ええ、私はそう思った。それは私の推測を確認した。実際には、2つの日付/時間範囲内で反復する関数を作成し、それぞれの対応する日付/時刻に一致する結果から各行を挿入しました。助けてくれてありがとう、トミー。アップして受け入れられました! –

関連する問題