- PR -

同じテーブル内でそれぞれ別データを取り出す

1
投稿者投稿内容
landy
会議室デビュー日: 2007/09/14
投稿数: 12
お住まい・勤務地: 中部
投稿日時: 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/15
投稿数: 28
お住まい・勤務地: 静岡市
投稿日時: 2008-07-21 17:23
引用:

そこで質問なのですが、これをもっと簡潔に書く方法は無いのでしょうか?
別々の名前を取り出す必要があるのでやはり別々にエイリアス指定するしか無いのでしょうか?



まーそんなもんです。
あえて言うなら、社員名を返すユーザー定義関数を作成するくらいかな
landy
会議室デビュー日: 2007/09/14
投稿数: 12
お住まい・勤務地: 中部
投稿日時: 2008-07-22 00:10
引用:

まーそんなもんです。
あえて言うなら、社員名を返すユーザー定義関数を作成するくらいかな



なるほど、まぁ、基本的には今ので合ってると言うことでしたら
あまり深く考えないことにします(笑

ありがとうございました。
kuta
会議室デビュー日: 2008/06/25
投稿数: 8
お住まい・勤務地: 東京都
投稿日時: 2008-07-25 20:58
要件は分かりませんが、もし仮に
 0001 | 社員A | 0002 | 社員B
などの表示をしたいのであれば発想を180度転換し、

社員コード | 社員名
-----------|----------
0001 | 社員A
0002 | 社員B

のようなテーブル定義とした上で
 SELECT 社員コード, 社員名 FROM 社員TBL
とした簡単なSQLを発行した上でその結果を横に配置するようにすれば、今回のような質問が発生するようなことはないと思います。

「社員が増えればカラムが増える」ようなDB設計はNGです。
とんくま
ベテラン
会議室デビュー日: 2005/08/02
投稿数: 56
お住まい・勤務地: 東京
投稿日時: 2008-07-25 21:43
引用:

kutaさんの書き込み (2008-07-25 20:58) より:
要件は分かりませんが、もし仮に
 0001 | 社員A | 0002 | 社員B
などの表示をしたいのであれば発想を180度転換し、
...


横のものを縦にするので、「180度転換」ではなく「90度転換」ですね?
(冗談です。)
1

スキルアップ/キャリアアップ(JOB@IT)