人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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,井上

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Area MySQL SQL コード サーバー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● beatgoeson
●35ポイント

select

T1.都道府県名,

count(T2.no)

from table1 T1, table2 T2

where

T1.area = T2.area

group by T1.都道府県名

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

◎質問者からの返答

ありがとうございます。

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


2 ● chuken_kenkou
●35ポイント

登録人数が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
◎質問者からの返答

ありがとうございます。

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ