2016-12-08 6 views
0

に参加:この表からSQLビュー私は、単一のDB2テーブルに次の行を持つ<strong>FACT_VEHICLE</strong>があると同じテーブル内のデータが異なる行


FACT_VEHICLE 
___________________________________________________________ 
**ID** |**COLOR** |**ADDITIONAL_INFO** 
___________________________________________________________ 
1   |BLUE  | 
___________________________________________________________ 
2   |RED   |1 

、私はそのViewを作成しています次のようになります。

VIEW_VEHICLE 
____________________________________________________________ 
**ID** |**COLOR_1** |**COLOR_2** 
____________________________________________________________ 
1   |BLUE  | 
____________________________________________________________ 
2   |RED   |BLUE 

私はsubselecをすることについて考えてきた、ビューにCOLOR_2行の内容を表示するにはこのようにしてください:

SELECT 
f.ID AS ID, 
f.COLOR AS COLOR_1, 
f2.COLOR AS COLOR_2 
FROM FACT_VEHICLE f JOIN FACT_VEHICLE f2 ON f2.ID = f.ADDITIONAL_INFO; 

これは最も効果的な方法ですか?

+1

あなたに基づいてデータ構造を持って、私はそれがだと思いますそれを行う唯一の方法です(おそらく、あなたは少し良いパフォーマンスのためのビューを作成することができます)。あなたはADDITIONAL_INFOをヌルにすることができます(最初の行でそうするように見えます)、LEFTのものになります。おそらくISNULL関数を使ってそれらのヌルを傍受します。 – hypnos

+0

ああ、そうです。 ADDITIONAL_INFOはnullでもかまいません。左結合の方が良いでしょう。 – 4Kings

答えて

0

あなたがnullまたは値の問題は存在しない(あなたが同じテーブルの上に ADDITIONAL_INFOとIDの間にFKを持っている場合はnullで、もちろん有効、除外)

SELECT f1.ID AS ID, f2.COLOR AS COLOR_1, ifnull(f2.COLOR, '') AS COLOR_2 
FROM FACT_VEHICLE f1 
LEFT OUTER JOIN FACT_VEHICLE f2 ON f2.ID = f1.ADDITIONAL_INFO; 
関連する問題