- - PR -
同じテーブル内でそれぞれ別データを取り出す
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-21 14:25
お世話になります。
ここに投稿して良いのかわからないのと わかりにくい件名で申し訳ないです。 MySQL5.0.51を使用しています。 tbl_memberと言うテーブルに社員データが有るとします。 (m_idは社員ID m_nameと言うのは社員名とします) で、TBLAというテーブルにcol_A,col_Bと言う列が有るとします。 で、col_A,col_Bは社員IDが入ってるとしますと、下記のSQLで それぞれの名前を取り出せることまではなんとか出来ました。 SELECT A.col_A , B.m_name , A.col_B , C.m_name FROM TBLA AS A , tbl_member AS B , tbl_member AS C where A.col_A = B.m_id and A.col_B = C.m_id ですがこれで仮にcol_C col_Dと増えたとすると、エイリアスを どんどん増やしていかないといけないと言うことになるかと思います。 そこで質問なのですが、これをもっと簡潔に書く方法は無いのでしょうか? 別々の名前を取り出す必要があるのでやはり別々にエイリアス指定するしか無いのでしょうか? つまらない初心者質問かもしれませんがお願いいたします。 | ||||
|
投稿日時: 2008-07-21 17:23
まーそんなもんです。 あえて言うなら、社員名を返すユーザー定義関数を作成するくらいかな | ||||
|
投稿日時: 2008-07-22 00:10
なるほど、まぁ、基本的には今ので合ってると言うことでしたら あまり深く考えないことにします(笑 ありがとうございました。 | ||||
|
投稿日時: 2008-07-25 20:58
要件は分かりませんが、もし仮に
0001 | 社員A | 0002 | 社員B などの表示をしたいのであれば発想を180度転換し、 社員コード | 社員名 -----------|---------- 0001 | 社員A 0002 | 社員B のようなテーブル定義とした上で SELECT 社員コード, 社員名 FROM 社員TBL とした簡単なSQLを発行した上でその結果を横に配置するようにすれば、今回のような質問が発生するようなことはないと思います。 「社員が増えればカラムが増える」ようなDB設計はNGです。 | ||||
|
投稿日時: 2008-07-25 21:43
横のものを縦にするので、「180度転換」ではなく「90度転換」ですね? (冗談です。) |
1