4

他の1つのテーブルへのIDを含むいくつかの列を持つテーブルがあります。例:

T1 {id,p1,p2,p3}
T2 {id,name}

したがってp1、、、p2およびp3はからのIDですT2。私がやりたいのは、すべてを選択しT1、名前の値T2も取得することです。

これは私が今使っているものです:

select
     T1.id,T1.p1,T1.p2,T1.p3,
     T2a.name as p1_name,T2b.name as p2_name,T2c.name as p3_name
from
     T1 left join T2 as T2a on T1.p1=T2a.id
     left join T2 as T2b on T1.p2=T2b.id
     left join T2 as T2c on T1.p3=T2c.id;

それはこれがどのように行われるべきですか?気になる速度の問題はありますか?

ありがとうございました。

4

1 に答える 1

7

はい、それはそれを行う正しい方法です。それがすべての正しい値を持つことがわかっている場合T2は、外部結合の代わりに内部結合を使用できます。

select T1.id,
       T1.p1, T21.name as p1_name,
       T1.p2, T22.name as p2_name,
       T1.p3, T23.name as p3_name
from T1
join T2 as T21 on T1.p1 = T21.id,
join T2 as T22 on T1.p2 = T22.id,
join T2 as T23 on T1.p3 = T23.id

に必要なものがすべて揃っていることを確認するために、列の外部キーを確認することをお勧めします。T1T2

パフォーマンスは良好であるはずです。これはかなり標準的なクエリです。

于 2011-09-07T17:31:12.857 に答える