ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3916292 クライアントの自由にソートする
質問者:sadoru お世話になっております。
現在データベースの中に下記のようなデータが存在するとします。

A B C D
1 2 3 4

(Aのカラムに1)
(Bのカラムに2)
と言う具合にデータが入っています。


そこで質問なのですが、クライアントの自由にABCDのカラム内のデータをソートさせるにはどのようにしたらよいでしょうか?

現在は、データベースのテーブルを下記のようにする対処方法しか思いつかないのですが、できれば上記テーブル構成のままソートさせたいのですが何か良い方法は御座いませんでしょうか?

例)  クライアントがA D B C の順にソートしたい場合

テーブル名:TB1
A  1  順位1
B  2  順位3
C  3  順位4
D  4  順位2

select * FROM TB1 A ORDER BY 順位 ASC
出力:
1 4 2 3
困り度:
  • 困っています
質問投稿日時:
08/04/02 17:44
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1  もしかして、質問の趣旨を誤解しているかもしれません。その節はご容赦を。

 具体的な名前にすると、たとえば、住所・氏名・電話番号が入ったテーブルがあって、これを、あるユーザーは、「住所・氏名・電話番号」の順番で出したいし、別のユーザーは、「氏名・住所・電話番号」と出したいとか・・・そういう意味でしょうか?
 とすれば、これは一つの固定したSQLでやるには無理があるように思います。

 たとえば、
 select A B C D from TB;
 とすれば、出力は、
 1 2 3 4
 となりますし、
 select A C D B from TB;
 とすれば、出力は、
 1 3 4 2
 となります。
 では、これを可変にするには、アプリケーションで、ユーザーの要求にあわせて、その場でSQL文を構築してそれをデータベースに発行するしかありません。
 アプリの言語がわからないので抽象的になりますが、
 "select "と
 フィールド名をスペース区切りで希望の順番に並べた文字列
 " from TB;"
 の3つの文字列を連結して、この結果をSQL文としてデータベースに渡すというカタチです。(動的SQLといいます)
回答者:mitoneko
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/02 19:53
この回答へのお礼ご返信ありがとう御座います。
全く誤解はされておりません。助かりました。

ご指示して頂いたことをヒントに下記のように作成致しましたら解決致しました。
ありがとう御座います。 また何かありましたらよろしくお願い致します。



クライアントが希望の順位を予め入力する。
テーブル名 : ORDER1
順位1 | 順位2 | 順位3 | 順位4
A | D | B | C


テーブル名 : TB1 (ORDER1の順位通りソートさせる)
A B C D
1 2 3 4


Select 順位1 , 順位2, 順位3, 順位4 from ORDER1


Select "&順位1&" , "&順位2&" , "&順位3&" , "&順位4&" from TB1


以上で、クライアントの希望通りにソートができました。ありがとう御座います。