![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
はじめまして、初心者でございます。
困っておりまして、友人にこのサイトを教えていただきました。
今、顧客の登録データを管理できるシステムを作っておりまして、登録したお客さんのデータを「ボタンを押したら県別に並び替えて取り出せるようにして」と言われました。
「ソート使えば簡単でしょ?」と言われましたが、検索しても何のことかわかりません。
教えていただけたら幸せすぎます。
データベース名はkanri(管理)
テーブル名はkokyaku(顧客)
カラム名は
ID (客ID)
name (名前)
sei (性別)
toshi (年齢)
add 住所(県のみ)
です。
select文を使って登録した順に表示させているのですが。
それをボタンで並び替えるといわれて「ん~~?」という状況です。
すいませんどなたかご教授ください。
質問が下手で伝わらなかったらすいません。
伝わらなかった部分があればすぐに追加させてもらいます。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
IT屋の者です。
んー、ごく単純にOrder byをつけたSQLを再発行し、リロードすれば
いいんじゃないかなと思いますが(笑)
現在、SQLが登録順
…ん?登録日フィールドが見当たらないんですが。
ま、
SELECT ID,name,sei,toshi,add FROM kokyaku Order by 登録日
ですかね?
そこを、
SELECT ID,name,sei,toshi,add FROM kokyaku Order by add
にするとOKかと思います。
ちなみに、このデータベース構造にちょっと足りないところが
あるようなので、指摘させていただきますと。
・顧客テーブルは永続的で一旦登録すると当分変更がないマスター
情報となります。人の年齢は毎年変わりますので、生年月日
フィールドが要るような気がします。
・年齢フィールドはSQL 発行時のリアル計算ですとちょっと
SQL 構文が面倒なので別途生年月日からNowを比較し、年齢を
再計算するSQL を毎日1回自動発行してやるといいと思います。
・住所をきっちり並べるのは住所とは別に「ふりがな」か、Order列
が必要です。無いと文字コード順に並びます。
・登録日フィールド無しでのSQL文は順序が保障されません。
登録順ではなくHDDに書かれた順になります。
たとえば、大量に過去データを削除した後で新データを登録すると
過去領域のスキマにデータを書いちゃうので、Sort順が登録順とは
限らなくなってしまいます。
ま、こういうのはやっているうちに判ってきますので。
お気楽にデータベースにチャレンジされるといいかと思います。
とてつもなく参考になりました。
ありがとうございます。
勉強になりました、こんなに早く返事くれるとは思っていませんでした。
なんて素敵なんだ。
さっそく実践してみます。
No.3
- 回答日時:
こんちは
県名は文字列ですか?
文字列ならアスキーコード順等でしか並べ替える事は出来ません。
一般的には都道府県番号は総務省で統一されており、ほとんどのデータがそれに則っているはずです。アスキーコード順ではなく、北海道から沖縄までの都道府県コードで管理する方が良いと思います。
http://ja.wikipedia.org/wiki/%E5%85%A8%E5%9B%BD% …
例えばカラムを一つ増やして、
カラム名は
ID (客ID)
name (名前)
sei (性別)
toshi (年齢)
add 住所(県のみ)
addcode 都道府県コード
としておけば、ORDER BY addcode で検索すれば見慣れた順番で並ぶ筈です。
どうしてもテーブルをいじりたくない、というなら別に県名と都道府県コードのテーブル(CREATE TABLE addcodes { addcode INT, add varchar(10) ,primarykey (addcode) })を用意して
SELECT kokyaku.* FROM kokyaku,addcodes WHERE kokyaku.add = addcodes.add AND ...絞込み検索式 ORDER BY addcodes.addcode
として検索すれば都道府県コード順に結果が表示されます。
参考まで。
No.2
- 回答日時:
No.1です。
喜んで頂いて何よりです。
ま、いつか、逆に私が質問したら、答え教えてくださいね(笑)
ちなみに、補足しますと。
注意点はもうちょっとだけあります。
・SELECT文のフィールド名を「SELECT * FROM TABLE」のように
「*」で省略…しないほうがいいです。
省略するとデータベースの変更に弱くなるのと、処理が遅く
なりがちになります。
・ソート順の件ですが、ORDER BY句はSELECT系で必須と考えて
ください。無いと面白い順番で返ってくるときがあります。
・RDBMS(データベースのソフト)の種類によっては、
name、addは関数名と近いので「[]」で囲むほうが安全です。
またキッチリと組み上げていくならば、こういう名前を使わずに
ID,FullName,Sex,Age,Addressというような英語を使ったほうが
他人に見せやすいかと思います。
・絞り込みのWhere句は絞れる順に書くと速くなる傾向があります。
例えば、Where 住所='大阪' AND 名前='山口'と書くよりも
Where 名前='山口' AND 住所='大阪'と書くほうが速いです。
なぜなら先に小さくデータを絞りこむとメモリを使わないからです。
あとはお使いのデータベースソフトにより異なります。
ま、Postgres、MySQL、Oracle、SQL Server全部でそれなりに癖が
ありますので。
では、いろいろ頑張ってみてください。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- その他(データベース) accessについて 2 2022/05/31 16:58
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- gooブログ Blogの使い方(ブログ・ユーザ設定について) 1 2022/04/23 12:40
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvをDBへ読み込んだら、NULLが...
-
Accessへ日付をINSERT
-
MySQLでデータベースにデータin...
-
ランダム文字列をDBにINSERT
-
変数にNULLを代入したい
-
phpでmysqlを使ってデータベー...
-
実行時エラー3131 FROM 句の構...
-
Pro*Cの構文エラー
-
PHPで[]の使い方について
-
アポストロフィを含む文字列の追加
-
テキストボックスに入れた内容...
-
子プロセス終了で閉じてしまうm...
-
検索結果($_POST)が2ページ目...
-
insert1つの処理でもトランザ...
-
PHP+mysqlでSQL文に文字数制限...
-
mysql_queryで日本語文字列が文...
-
VBAをつかってクエリの情報を抽...
-
【初歩】配列の格納データ数だ...
-
phpのエラーについてです
-
SQL文が実行できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
csvをDBへ読み込んだら、NULLが...
-
ヒアドキュメントでSQLを書く事...
-
カラムにデータがあるかないか...
-
出勤表の作り方
-
phpでテーブルを作る際変数によ...
-
OracleからAccessへのインポート
-
どちらが高速ですか?
-
エクセルをMysqlに格納
-
PHPでmySQLのテーブルを作成したい
-
MDB2エラーが対応出来ません。
-
SQLで返り値が空とでる
-
PHPでいいね機能を作りたいので...
-
データをDBからひっぱってき...
-
SQL Serverからのvarchar型のデ...
-
where文について
-
PEAR Pagerを利用してデータの...
-
PHPでフォームからデータDBに書...
-
日またぎの計算
おすすめ情報