select a.编号,a.姓名,B1.安装人姓名,B2.设计人编号 from A, B B1,B B2 where a.安装人编号=B1.人员编号(+) or a.设计人编号=B2.人员编号(+)条件用or就行了。
这种情况最好是写一个函数,输入人员编号,输出人员姓名;如果输入是null,输出也是null。 f_get_name(v_i_id varchar2):return varchar2;select 编号,姓名,安装人编号,f_get_name(安装人编号) as 安装人姓名,设计人编号,f_get_name(设计人编号) as 设计人姓名, from a;
where a.安装人编号=B1.人员编号(+)
and a.设计人编号=B2.人员编号(+)
GerryYang(轻尘) :
你考虑一下,
a
1,table1,1,null
2,table2,2,2
3,table3,2,null
b.
1,jin
2,bao
3,tang
如果出现这样的情况,
结果只能是
2,table2,bao ,bao
而不是正确的答案
正确的应该是
1,table1,jin,null
2,table2,bao,bao
3,table3,bao,null
where a.安装人编号=B1.人员编号(+)
or a.设计人编号=B2.人员编号(+)条件用or就行了。
f_get_name(v_i_id varchar2):return varchar2;select 编号,姓名,安装人编号,f_get_name(安装人编号) as 安装人姓名,设计人编号,f_get_name(设计人编号) as 设计人姓名,
from a;