主要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