SQLについて教えてください


MySQL 4.0.2x です

下記のような2つのテーブルから
一度に全都道府県毎の登録人数を知るにはどういうSQL文にすれば良いのでしょうか?
(できればサーバーを移転した際にも変更せずに使えるようなコードを希望しています)

結果としてこのように表示したいと考えています

北海道 => xx人
青森県 => xx人
岩手県 => xx人

よろしく願いします。

table1

area,都道府県名
1,北海道
2,青森県
3,岩手県
4,宮城県
5,秋田県

table2

no,area,名前
1,4,田中
2,5,山田
3,1,佐藤
4,2,村田
5,2,井上

回答の条件
  • 1人2回まで
  • 登録:2007/12/13 09:44:07
  • 終了:2007/12/21 09:40:03

回答(2件)

id:beatgoeson No.1

beatgoeson回答回数128ベストアンサー獲得回数142007/12/13 10:22:27

ポイント35pt

select

T1.都道府県名,

count(T2.no)

from table1 T1, table2 T2

where

T1.area = T2.area

group by T1.都道府県名

でいかがでしょう。MySQLでは検証してませんが‥

id:worldtravel

ありがとうございます。

時間ができ次第試します。

2007/12/13 13:38:08
id:chuken_kenkou No.2

chuken_kenkou回答回数722ベストアンサー獲得回数542007/12/13 10:57:53

ポイント35pt

登録人数が0の都道府県は、表示したいのでしょうか?

それとも、表示不要でしょうか?

前者なら、LEFT OUTER JOIN、後者ならINNER JOINを使うことになります。

表示順は、table1のarea順にしたいでしょうか?



1.登録人数が0の場合の都道府県も表示

select
  都道府県名,
  count(no) as 人数
 from table1 as t1
  left join table2 as t2
   on t1.area=t2.area
 group by t1.area,都道府県名
 order by t1.area

2.登録人数が0の場合は表示しない

select
  都道府県名,
  count(no) as 人数
 from table1 as t1
  inner join table2 as t2
   on t1.area=t2.area
 group by t1.area,都道府県名
 order by t1.area
id:worldtravel

ありがとうございます。

時間ができ次第試します。

2種類ありがとうございます。

希望は(1)の方で、表示はtable1のarea順です。

2007/12/13 14:09:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません