主要Table_1
:DB2 SQL:改變連接查詢提供所需的結果
ID ROLE CODE
______________________________
1 DIRECTOR CD1
1 PRODUCER CD2
1 ACTOR CD10
2 PRODUCER CD5
2 ACTOR CD11
2 DIRECTOR CD8
2 SPOT_BOY CD97
3 ACTOR CD12
3 DIRECTOR CD41
______________________________
參考Table_2
:
COL_NAME REF_VALUE
____________________________
DIRECTOR DIR
PRODUCER PROD
ACTOR ACT
SPOT_BOY SPB
____________________________
ROLE
的Table_1
柱Table_2
參考Table_3
的COL_NAME
柱聯接:
select
a.id, a.role, b.ref_value, c.code, c.name
from
table_1 a, table_2 b, table_3 c
where
a.id = 1
and a.role = b.col_name
and a.code = c.code
結果:的
CODE NAME
_________________________
CD1 ONE
CD2 TWO
CD5 FIVE
CD10 TEN
CD11 ELEVEN
CD12 TWELVE
CD97 NINETY_SEVEN
CD8 EIGHT
CD41 FORTY_ONE
_________________________
CODE
柱,Table_3
查詢CODE
柱聯接
ID ROLE REF_VALUE CODE NAME
___________________________________________
1 DIRECTOR DIR CD1 ONE
1 PRODUCER PROD CD2 TWO
1 ACTOR ACT CD10 TEN
___________________________________________
在不修改任何的三個表,我想修改上面的查詢如下:每當ROLE
中Table_1
是PRODUCER
(或在Table_2
的REF_VALUE
是PROD
),相應的從Table_1
CODE
(或CODE
從Table_3
)和NAME
從Table_3
應該被視爲其的ROLE
DIRECTOR
該ID
。
即用於ID
1所述的修改的查詢應該導致:
ID ROLE REF_VALUE CODE NAME
___________________________________________
1 DIRECTOR DIR CD1 ONE
1 PRODUCER PROD CD1 ONE
1 ACTOR ACT CD10 TEN
___________________________________________
爲ID
2所述的修改的查詢應該導致:
ID ROLE REF_VALUE CODE NAME
_____________________________________________________
2 PRODUCER PROD CD8 EIGHT
2 ACTOR ACT CD11 ELEVEN
2 DIRECTOR DIR CD8 EIGHT
2 SPOT_BOY SPB CD97 NINETY_SEVEN
_____________________________________________________
換句話說,與上面給出的表結構(和沒有選擇修改表中的結構或數據),我想要一個查詢,其中給定任何ID
,CODE
和NAME
值角色PROD
和DIR
應該是對應於該ID
的角色DIR
的值。
我正在使用DB2數據庫。
感謝您的閱讀!
1)感覺應該使用'Table_2.col_name'值切換'Table_1.role'值。 2)這是否應該永久切換(即更新數據庫)? – 2015-04-04 23:35:58
@ Clockwork-Muse:不..我不允許更新數據庫...檢查您的解決方案.. – Nik 2015-04-05 02:50:04