这是个多表外连接的问题,这是informix的写法,现在应用要签到Oracle中,总是写不对,表太多了,望高手指教一二select 
a.int_id,
a.omc_id,
b.msc_name,
a.timestamp,
a.routeset_id,
c.linkset_id,
a.routeset_id,
a.routeset_priority,
d.national_network_dpc,
b.dest_spc
from 
c_hua_MSCServerMTP3SignallingRoute a,
c_hua_msc_info b,
outer c_hua_linkset  c,
outer c_hua_SignallingPoint d
where 
a.msc_fdn = b.fdn and 
a.linkset_index = c.linkset_index and 
a.signallingpoint_fdn = d.fdn and
 a.msc_fdn = c.msc_fdn 

解决方案 »

  1.   


    select 
    a.int_id,
    a.omc_id,
    b.msc_name,
    a.timestamp,
    a.routeset_id,
    c.linkset_id,
    a.routeset_id,
    a.routeset_priority,
    d.national_network_dpc,
    b.dest_spc
    from 
    c_hua_MSCServerMTP3SignallingRoute a,
    c_hua_msc_info b,
    full join c_hua_linkset  c on a.linkset_index = c.linkset_index  and a.msc_fdn = c.msc_fdn 
    full join c_hua_SignallingPoint d on a.signallingpoint_fdn = d.fdn
    where a.msc_fdn = b.fdn ;
      

  2.   

    select 
    a.int_id,
    a.omc_id,
    b.msc_name,
    a.timestamp,
    a.routeset_id,
    c.linkset_id,
    a.routeset_id,
    a.routeset_priority,
    d.national_network_dpc,
    b.dest_spc
    from 
    c_hua_MSCServerMTP3SignallingRoute a,
    c_hua_msc_info b,
    c_hua_linkset  c,
    c_hua_SignallingPoint d
    where 
    a.msc_fdn = b.fdn and 
    a.linkset_index = c.linkset_index and 
    a.signallingpoint_fdn = d.fdn and
     a.msc_fdn = c.msc_fdn 
      

  3.   

    从你写的sql来看,一a表为主表,可以把a的所有数据选出来。其他的有有没有数据都可以的。select 
    a.int_id,
    a.omc_id,
    b.msc_name,
    a.timestamp,
    a.routeset_id,
    c.linkset_id,
    a.routeset_id,
    a.routeset_priority,
    d.national_network_dpc,
    b.dest_spc
    from 
    c_hua_MSCServerMTP3SignallingRoute a,
    left outer join  c_hua_msc_info on b a.msc_fdn = b.fdn 
    left outer join  c_hua_linkset  c on a.linkset_index = c.linkset_index 
    left outer join  outer c_hua_SignallingPoint d on a.signallingpoint_fdn = d.fdn