日期:2014-05-16  浏览次数:20511 次

'ora-0417 表可以外部连接到至多一个其它的表'的解决方法

今天做统计时遇到一个问题,一张主表a表关联多张编码表,前台展示需要统计表内包含所有码值的统计结果(如没有该码值数据,统计结果为0),本想用多张编码表做主表,与a表做外连接,执行时才发现报错'ora-0417 表可以外部连接到至多一个其它的表'(低级错误ToT)

方法A:表a与编码表1做外连接,再将得到的结果与编码表2做外连接,然后再跟编码表3做外连接.....层层嵌套,太蛋疼,pass...

方法B:将所有编码表的码值,名称select distinct出来,得到需统计的编码的笛卡儿积,举个例吧,

SELECT DISTINCT b.vab568 naa001,
                            b.aab301 jaa051,
                            b.vab567 jaa050,
                            c.aaa102 jaa003_id,
                            c.aaa103 jaa003,
                            d.aaa102 jaa004_id,
                            d.aaa103 jaa004,
                            e.din002 age_group,
                            e.din004 age_stage
              FROM bi_thr_qc@dl_app b,
                   aa10a1@dl_app    c,
                   aa10a1@dl_app    d,
                   t_age_group      e
             WHERE c.aaa100 = 'JAA003'
               AND d.aaa100 = 'JAA004'
               AND e.dip001 = 2

然后将此表作为主表m,与a表进行外连接,group by(统计数量的字段需用0替换空值nvl(count(a.pk),0))

done.