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。对它保留前两个表的输出,并从第三个表引入匹配行。