こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

結合について

次のようなテーブルがあるとします。
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

QNo.1421820

すぐに回答ほしいです

質問者が選んだベストアンサー

>#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)

ANo.3

環境がないんで、試してないんですけど、、、。
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

ANo.2

select Date, B1.Name, B2.Name from A, B B1, B B2
where member_A = B1.member
and member_B = B2.member
and No = 1

投稿日時 - 2005-05-31 23:36:36

ANo.1

確認してないので、ぱっと見た目ですが

select a.date, b.name, c.name
from TableA a
inner join TableB b on (a.member_A=b.member)
inner join TableB c on (a.member_B=c.member)
where a.No = :No

で如何でしょうか?

投稿日時 - 2005-05-31 23:34:59

あなたにオススメの質問