私はこれに対する答えをグーグルで精査してきましたが、私が作っているよりも簡単だと確信しており、これを行う正しい方法を学びたいと思っています.
emails_sent
カウントを選択し、列でグループ化するテーブルが 1 つあります。各行にはtype
、「確認」、「1 日」、「当日」の 3 つのいずれかが含まれます。私も特定の日付までにこれをやっています。たとえば、今日選択するクエリの例を次に示します。
SELECT Count(id) AS count,
type
FROM emails_sent
WHERE Date_format(date, '%Y-%m-%d') = '2013-03-29'
GROUP BY type
ORDER BY type;
これはそれが返すものです:
+------+---------+ | | カウント | タイプ | +------+---------+ | | 32 | 確認 | | | 4 | 1日 | +------+---------+
これは素晴らしいことですが、たまたま今日のレコードが 0 である 3 番目の「タイプ」もありますが、0 であってもそのカウントを取得する必要があります。
また、これらの 3 つの「タイプ」だけを含む 2 番目のテーブルを作成し、右結合を使用してみましたが、それでも 0 カウントは取得されません。これは私が2つのテーブルで行ったことです:
SELECT t.type,
Count(s.id) AS count
FROM emails_sent s
RIGHT JOIN email_types t
ON s.type = t.type
WHERE Date_format(s.date, '%Y-%m-%d') = '2013-03-29'
GROUP BY t.type;
私が見逃しているのは単純なものだと確信しています。