私は比較的初心者で、これと長い間戦ってきました - 誰でも助けてください!
さまざまな種類の開発に関する問い合わせ (dev_enquiry) を受け取るテーブルがあり、開発ごとに 1 日あたりの問い合わせ数を示す動的グラフを作成しています。日付の列を保持するカレンダーテーブルと結合して、問い合わせがないときに0の値を取得できるようにしました。
このSQLは私が望むものを正確に提供しますが、それはすべての開発のためのものです
SELECT calendar.datefield AS DATE, COUNT(de_id) AS enquiries
FROM `calendar`
LEFT JOIN dev_enquiry ON DATE(dev_enquiry.de_date_created) = calendar.datefield)
WHERE calendar.datefield BETWEEN (
SELECT MIN(DATE(de_date_created))
FROM dev_enquiry
)
AND (SELECT MAX(DATE(de_date_created)) FROM dev_enquiry)
GROUP BY DATE
ORDER BY DATE DESC
2012-11-08 3
2012-11-07 0
2012-11-06 2
2012-11-05 1
2012-11-04 3
開発の種類によって結果を除外したいのですが、その特定の開発についてその日に問い合わせがない場合は、null 値を保持したままにします。
次は結果をフィルター処理しますが、null 値は提供しません。
SELECT cal.datefield AS DATE, COUNT(t.de_id) AS enquiries
FROM (
SELECT * FROM dev_enquiry as d LEFT JOIN calendar as c ON (DATE(d.de_date_created) = c.datefield)
WHERE d.de_dev_name = 'Green') as t
LEFT JOIN calendar as cal ON (cal.datefield = DATE(t.de_date_created))
WHERE (cal.datefield BETWEEN (SELECT MIN(DATE(t.de_date_created))
FROM dev_enquiry) AND (SELECT MAX(DATE(de_date_created)) FROM dev_enquiry))
GROUP BY DATE ORDER BY DATE DESC
2012-11-08 1
2012-11-06 2
2012-11-05 1
2012-11-04 1
2012-11-07 の結果がありません