3つのテーブルを相互に接続しました。キーワードと統計をクエリしています。
日付範囲ごとにデータを取得する必要があります。その特定の日付範囲のデータがない場合は、0の統計を返します。
私のクエリが次のようになっているとしましょう:
SELECTkeyword、SUM(stat)FROMkeywords WHERE date> = '2012-07-10' GROUPBYkeyword;
|私のキーワード1|3|
を返します
|私のキーワード2|6 | テーブルの内容の例:
| id | キーワード| 統計| 日付| キーワードグループ|
| 1 | 私のキーワード1| 2 | 2012-07-11 | 1 |
| 2 | 私のキーワード1| 1 | 2012-07-12 | 1 |
| 3 | 私のキーワード2| 6 | 2012-07-11 | 1 |
| 4 | 私のキーワード3| 10 | 2012-07-09 | 1 | しかし、その日付範囲の統計がないキーワードがいくつかありますが、
それでも統計として0を表示するキーワードを取得したいと思います。このような:
|私のキーワード1|3 |
|私のキーワード2|6 |
|私のキーワード3|0 |
問題は、where句が見つからない値をブロックするという回避策があることです。
リレーションを持つ3つのテーブルがあると言ったように、LEFT JOINを使用してデータをクエリします。簡単にするために、その部分をクエリ例から除外しました。
表:キャンペーン
ID
名
表:KeywordGroupID
名
キャンペーン
表:
KeywordDataid
キーワード
統計
日付
keywordGroup