select t1.id,name,nvl(value1,0),nvl(value2,0),nvl(value3,0)
from t1,t2,t3,t4
where t1.id=t2.id(+)
and t1.id=t3.id(+)
and t1.id=t4.id(+)

解决方案 »

  1.   

    我补充一下:select t1.id,t1.name,nvl(t2.value1,0),nvl(t3.value2,0),nvl(t4.value3,0)
    from t1,t2,t3,t4
    where t1.id=t2.id(+)
    and t1.id=t3.id(+)
    and t1.id=t4.id(+);这里用到了左联接,即左边的表是主表,(+)号放在副表的后面,无加号的代表主表,在查询时主表中的数据记录全部都显示出来的,无论副表中有没有。nvl(t2.value1,0)代表是当t2.value1是空时就用0代替,非空时就用本身值。