oracle sql查询困难

时间:2014-05-10 19:34:17

标签: 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)    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

换句话说,我想将这两个查询合并为一个并获得上面的最终结果。因此,不显示服务代码,而是显示相应的数字。

1 个答案:

答案 0 :(得分:1)

您希望在您的情况下使用显式联接left outer join执行此操作。您的原始查询是:

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;