- ベストアンサー
最も良く選ばれたレコードをソートして表示したい
例えば、観光地で人気の観光スポットを知りたい時に、 下記のようなテーブルを考えました。 観光客,観光地,枝番,行った観光スポット Aさん,北海道,01,阿寒湖 Aさん,北海道,02,すすきの Aさん,北海道,03,登別温泉 Aさん,北海道,04,支笏湖 Bさん,カナダ,01,バンクーバー Bさん,カナダ,02,プリンスエドワード Bさん,北海道,01,五稜郭 Bさん,北海道,02,摩周湖 Bさん,北海道,03,すすきの . . . . . . . . 上記のテーブルから、北海道に行った観光客の訪れた観光スポットを、多い順にソートして表示したいのですが、どうすればよいでしょうか? また、そういう目的なら、テーブル構成などこうした方が良いなどのアドバイスがあればお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
select 観光スポット,count(観光スポット) as cnt from テーブル group by 観光スポット order by cnt でどうでしょう? テストをしてないのでちゃんと動く自信なし。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
>テーブル設計はこんな感じでいいのでしょうか? >それとももっと効率的な設計があるのでしょうか? 「枝番」を持つ目的は、何でしょうか? 訪れた順序を記録するため? もしそうなら、通番管理は面倒だし、日付にした方が順序も規定できるし、「○月に観光客が多い」といった分析もできます。 観光客名、観光地名、スポット名を、名前そのままで重複したデータで格納するのでしょうか? コード化した方が、データ総量を少なくできます。 名前での登録では、同姓同名や地名で「すすきの」と書かれた場合と「薄野」と書かれた場合など、同じ場所なのか別の場所なのか区別が出来ないといった問題が発生する可能性があります。
補足
回答ありがとうございます。やりたかったことが不可能ではないようで安心しました。しかし、実はまだテーブル構成がこれでよいのか一抹の不安があるので、実際にテーブルを作ってデータを入れるところまで行っていません。テーブル設計はこんな感じでいいのでしょうか?それとももっと効率的な設計があるのでしょうか?