oracle sql查询困难
我有一个这样的疑问oracle sql查询困难,sql,oracle,Sql,Oracle,我有一个这样的疑问 select distinct rel.service_code, gsm.mobile_no from service.gsm gsm, service.gsm_relation rel where gsm.code = rel.child_service_code(+) 输出的结果如下 service code GSM (null) 088641
select distinct rel.service_code, gsm.mobile_no
from service.gsm gsm, service.gsm_relation rel
where gsm.code = rel.child_service_code(+)
输出的结果如下
service code GSM
(null) 08864124323
null 05534234234
null 03244242423
5000552 02443244324
(null) 01313131313
(null) 01233131231
现在,我如何使用输出的服务代码,在本例中为5000552,在gsm表中查找,如
select mobile_no from service.gsm
where code = '5000552'
它输出0773442342,并将此号码放入上面的查询中,而不是服务代码。因此,在本例中所需的输出是
service code GSM
(null) 08864124323
null 05534234234
null 03244242423
0773442342 02443244324
(null) 01313131313
(null) 01233131231
换句话说,我想将这两个查询合并成一个查询,并得到上面的最终结果。因此,与其显示服务代码,不如显示服务代码对应的编号。您希望通过显式联接来执行此操作,在本例中,
左外联接。您的原始查询是:
select distinct rel.service_code, gsm.mobile_no
from service.gsm gsm left outer join
service.gsm_relation rel
on gsm.code = rel.child_service_code;
要完成查询,只需添加另一个left-outer-join
子句:
select distinct gsm2.service_code, gsm.mobile_no
from service.gsm gsm left outer join
service.gsm_relation rel
on gsm.code = rel.child_service_code left outer join
service.gsm gsm2
on rel.service_code = gsm2.service_code;
嗨,太好了。只是想知道第二个左外连接。它是从第一个左外连接连接整个输出吗?@user3017335。对它保留前两个表的输出,并从第三个表引入匹配行。