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]