1

MySQL には次のクエリがあります。

SELECT COUNT( * ) AS `total` , DAYOFYEAR( FROM_UNIXTIME( unixtimeissued ) ) AS `dayOfYear` , YEAR( FROM_UNIXTIME( unixtimeissued ) ) AS `year`
    FROM flex_information
    WHERE unixtimeissued >= 'giventime'
    GROUP BY dayOfYear, year
    ORDER BY year, dayOfYear
    LIMIT 0 , 300

特定の日付のエントリがなかった場合に 0 カウントを挿入する方法が見つからないことを除いて、これは正常に機能します。つまり、「2012 年 6 月 13 日」のエントリがない場合、その日付の「合計」として 0 を返したいと考えています。

編集: このデータは折れ線グラフのプロットに使用されるため、正確なグラフ正常に表示するには、日付と組み合わせて 0 カウントが必要です。.

私はこの答えを見つけました:MySQLの範囲内の欠落している日付を埋める方法は? : 'numbers' テーブルができましたが、ソリューションをクエリにうまく適合させることができませんでした。私が推測していることのいくつかは、簡略化された構文であり、概念を理解するのが難しくなっています。

4

1 に答える 1

0

上記の選択を行うことで、結果がゼロであった時期を正確に知ることができます。発生する必要があるのは、範囲の比較だけです。たとえば、次のレコード セットが返された場合:

ID     DATE   
1      JUN first    
2      JUN second
3      JUN fifth
4      JUN sixth  

JUN third と JUN four にはエントリがないことは明らかなので、デフォルトではゼロになります。関数を使用してこれらの値の範囲を見つけることができるはずです。

アップデート

スキーマが次のように変更されている場合、問題を回避できます。

ID, DATE, COUNT

データベース内のカウントを追跡することにより、すぐに使用できる数を持つことができます。多くの更新が発生する場合、テーブルが大きくなるにつれてプロセスに時間がかかることに注意してください。

于 2012-08-02T14:17:38.310 に答える