1

重複の可能性:
(mysql または perl 側で) SQL の結果に空の日付を埋め込む最も簡単な方法は何ですか?

some_table で作成されたすべての「レコード」には「日付」があります。

some_table:

-------------------------
id | record | my_date
-------------------------
1  | rec_a  | 2012-08-01
2  | rec_b  | 2012-08-02
3  | rec_c  | 2012-08-02
4  | rec_d  | 2012-08-04
5  | rec_e  | 2012-08-06
6  | rec_f  | 2012-08-06

my_query:

start_date と end_date は入力から取得されます

SELECT
    my_date, COUNT(my_date) AS _count
FROM
    some_table
WHERE
    my_date
BETWEEN
    start_date
AND
    end_date
GROUP BY
DAY (my_date)

配列:

while($result = mysql_fetch_assoc($my_query))
{
    $dataset[] = array($result['my_date'],intval($result['_count']));
}

json_encode($dataset);

これにより、次のようになります。

["2012-08-01",1]
["2012-08-02",2]
["2012-08-04",4]
["2012-08-06",6]

このようなカウントがない日を取得する最良の方法は何ですか?

["2012-08-01",1]
["2012-08-02",2]
["2012-08-03",0] <--
["2012-08-04",4]
["2012-08-05",0] <--
["2012-08-06",6]
4

1 に答える 1

0

これを行う最も簡単な方法は、考えられるすべての日付を含むテーブルを作成することです。次に、そのテーブルから選択し、既存のテーブルに左結合します。

ハッキーに思えるかもしれませんが、これは非常に一般的なパターンであり、特にデータ ウェアハウジングではそうです。

于 2012-08-28T18:23:57.070 に答える