[前][次][番号順一覧][スレッド一覧]

mysql:12697

From: 佐野大輔 <佐野大輔 <d-sano@xxxxxxxxxx>>
Date: Wed, 01 Feb 2006 23:04:27 +0900
Subject: [mysql 12697] Re: テーブルを結合するSQL

さのと言います。

tbl2.keyではなくtbl1.keyでgroup byすれば良いです。

kero wrote:
> お世話になります。keroといいます。
> 2つのテーブルを結合して表示したいのですが、うまくいきません。
> 単純なSQLの問題で、MySQL固有ではないのですがご教示願えませんでしょうか。
> 
> テーブル構成は以下のtbl1とtbl2があり、tbl1のkey、tbl2のidが主キーになり、
> tbl2.keyがtbl1.keyに関連付けられています。
> 
> tbl1
> +------+------+
> | key  | name |
> +------+------+
> | aa   | 1234 |
> | bb   | 2345 |
> | cc   | 3456 |
> | dd   | 4567 |
> | ee   | 5678 |
> | ff   | 6789 |
> +------+------+
> 
> tbl2
> +----+------+
> | id | key  |
> +----+------+
> |  1 | aa   |
> |  2 | aa   |
> |  3 | aa   |
> |  4 | bb   |
> |  5 | bb   |
> |  6 | cc   |
> +----+------+
> 
> 希望としては以下のような結果(tbl2をkeyでグループ化しておのおのの行数を取得
> し、tbl1と結合)を得たいと思っています。
> +------+-----------+
> | key  | count(id) |
> +------+-----------+
> | dd   |         0 |
> | ee   |         0 |
> | ff   |         0 |
> | aa   |         3 |
> | bb   |         2 |
> | cc   |         1 |
> +------+-----------+
> 
> 以下のようなSQLを記述したのですが、
> select tbl1.key,count(id) from tbl1 left outer join tbl2 on tbl1.key=tbl2.key 
> group by tbl2.key;
> このような結果になってしまいます。
> +------+-----------+
> | key  | count(id) |
> +------+-----------+
> | dd   |         0 |
> | aa   |         3 |
> | bb   |         2 |
> | cc   |         1 |
> +------+-----------+
> 
> 希望する結果を得るためにはどのようなSQLを書けばよろしいでしょうか。
> ご教示下さい。
> どうぞよろしくお願いします。
> 

[前][次][番号順一覧][スレッド一覧]

->   12697 2006-02-01 23:04 [佐野大輔 <d-sano@xxx] Re: テーブルを結合するSQL               
     12701 2006-02-02 10:01 ┗[kero <info@xxxxxxxxx]