結合について
次のようなテーブルがあるとします。
Table A
No,Date,member_A,member_B
1 ,0102 ,1001 ,1003
2 ,0212 ,1091 ,1023
3 ,0403 ,1056 ,1065
Table B
member ,Name
1001 ,Taro
1002 ,Takashi
1003 ,Yutaka
といった具合のテーブルがあるとします。
やりたい事はTable AのNoを指定されたらDateとmember_Aとmember_BのNameを取得したいのです。
例えば、No1を指定したら、0102 ,Taro ,Yutakaといった具合に・・・。1発で取得するにはどういったSQLになりますか?どなたかご教授願います。よろしくお願いします。
投稿日時 - 2005-05-31 23:25:13
>#3
TbaleAのNoは、ユニークな要素であると断定できる記述はないのだが...
WHEREが書かれてないので、Noが重複を認めるとき、
例えば、No=1が3件該当するとしたら、問い合わせ結果が
9レコードになって、3倍おいしい?
一般的に、9i以上なら、#1で良いし、古いオラクルなら
#2が一般的でしょう。
また、8i以降のオラクルであれば..
select
No,
(select Name from B where member_A=member) NameA,
(select Name from B where member_B=member) NameB
from A
where No=?
;
のような、フィールドリスト上のサブクエリも使えます。
投稿日時 - 2005-06-02 10:03:20
このQ&Aは役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
回答(4)
環境がないんで、試してないんですけど、、、。
No値を外に出してもいいと思いますが、スピード性能はこちらの方が速いかな。(TABLE内のデータ件数によるかな。)
##################################################
SELECT
C1.Date,
C2.Name,
C2.Name
FROM
(SELECT * FROM A, B WHERE member_A=member AND No=&No) C1,
(SELECT * FROM A, B WHERE member_B=member AND No=&No) C2
投稿日時 - 2005-06-02 00:50:07