みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLのクエリについて

いつもお世話になっております。未熟なために少々ハマっておりますので、アドバイス頂けたらと思います。

環境:MySQL Ver.4.0 (レンタルサーバー)
テーブル名 table
|name|year|data|
|take|2006| 1 |
|matu|2007| 2 |
|turu|2006| 3 |
|kame|2008| 2 |
|matu|2008| 2 |
|matu|2006| 3 |
|turu|2008| 1 |
|kame|2005| 2 |
|turu|2006| 1 |
上記のようなテーブルがあります。

そこで年と名前でまとめて、dateが1と3だけをカウントさせて抽出し、カウントしなかったデータは0を入れたいのです。下記のように出したいのですが・・・

|name|year|count(data)|
|take|2006| 1 |
|matu|2008| 0 |
|matu|2007| 0 |
|matu|2006| 0 |
|turu|2008| 1 |
|turu|2006| 2 |
|kame|2008| 0 |
|kame|2006| 0 |
SELECT name, year,count(data) FROM table WHERE data = 1 OR data = 3 GROUP BY year,name;
とすると、カウントが0のデータは抽出できません・・・。
アドバイス頂ける方がいらっしゃいましたら、よろしくお願い致します。

投稿日時 - 2008-08-21 02:19:32

QNo.4266501

すぐに回答ほしいです

質問者が選んだベストアンサー

サブクエリーがつかえないならテンポラリでやるといいですね

CREATE TEMPORARY TABLE temp
SELECT name as n, year as y,count(*) as c FROM table WHERE data=1 OR data=3 GROUP BY year,name;
SELECT DISTINCT name, year,COALESCE(c,0) AS count FROM table
LEFT JOIN temp ON year=y AND name=n

投稿日時 - 2008-08-21 09:42:43

お礼

さっそくアドバイス頂きましてありがとうございました。
期待通りの結果が得られました。素早いアドバイスありがとうございました。
また今後も何かあったときには、よろしくお願い致します。

投稿日時 - 2008-08-21 22:17:15

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問