select NVL(TM.HENKINGAKU,0) AS HENKINGAKU, 
NVL(TH.HENKO_RIYU,' ')  AS HENKO_RIYU, 
NVL(TH.HENKO_RIYU_CD,' ') AS HENKO_RIYU_CD, 
NVL(HK.SENKO_CD,' ') AS SENKO_CD, 
NVL(HK.HIKIOTOSHI_YMD,' ') AS HIKIOTOSHI_YMD, 
NVL(M4.HIMOKU_RN,' ') AS HIMOKU_RN 
 from 
GN_SP_HENKIN_TBL HK,
GN_SP_HIYO_TBL TH,
GN_SP_KYOTSU_TBL TM,
GN_HIKIATE_TBL HJ,
GN_GAKUNO_TBL M2,
GN_HIMOKU_TBL M4,
GN_GAKUNO_JOHO_TBL GN
 where HJ.GAKKO_KBN_CD = 'OI'
 and 
 HJ.NYUGAKU_NENDO = '2000'
 and 
 HJ.GAKUSEKI_NO = '10001'
 and 
 HJ.KASHIKATA_RECORD_KBN = 'H'
 and 
 HJ.YUKOMUKO_JOTAI = '1' 
 and 
GN.GAKKO_KBN_CD = HJ.GAKKO_KBN_CD
 and 
GN.NYUGAKU_NENDO = HJ.NYUGAKU_NENDO
 and 
GN.GAKUSEKI_NO = HJ.GAKUSEKI_NO
 and 
GN.NONYU_YOTEI_NO = HJ.NONYU_YOTEI_NO
 and 
 
 
 M2.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
 and 
 M2.GAKUNO_KBN_CD = HJ.GAKUNO_KBN_CD(+)
 and 
 M4.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
 and 
 M4.HIMOKU_CD = HJ.KASHIKATA_HIMOKU_CD(+)
会出现错误,ORA-01417 ,就是下面的这连接出错,到底怎么回事啊
 M2.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
 and 
 M2.GAKUNO_KBN_CD = HJ.GAKUNO_KBN_CD(+)
 and 
 M4.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
 and 
 M4.HIMOKU_CD = HJ.KASHIKATA_HIMOKU_CD(+)

解决方案 »

  1.   

    类似的这样的连接:
    a.b (+) = b.b and a.c (+) = c.c 
    is not allowed.
      

  2.   

    你怎么能那么肯定是连接出错呢
    到Oracle中运行会报什么错?
    你得连接语法是没有错的
      

  3.   

    select NVL(TM.HENKINGAKU,0) AS HENKINGAKU, 
    NVL(TH.HENKO_RIYU,' ')  AS HENKO_RIYU, 
    NVL(TH.HENKO_RIYU_CD,' ') AS HENKO_RIYU_CD, 
    NVL(HK.SENKO_CD,' ') AS SENKO_CD, 
    NVL(HK.HIKIOTOSHI_YMD,' ') AS HIKIOTOSHI_YMD, 
    NVL(M4.HIMOKU_RN,' ') AS HIMOKU_RN 
     from 
    GN_SP_HENKIN_TBL HK,
    GN_SP_HIYO_TBL TH,
    GN_SP_KYOTSU_TBL TM,
    GN_HIKIATE_TBL HJ,
    GN_GAKUNO_TBL M2,
    GN_HIMOKU_TBL M4,
    GN_GAKUNO_JOHO_TBL GN
     where HJ.GAKKO_KBN_CD = 'OI'
     and 
     HJ.NYUGAKU_NENDO = '2000'
     and 
     HJ.GAKUSEKI_NO = '10001'
     and 
     HJ.GAKUSEKI_NO = '10001'
     and 
     HJ.KASHIKATA_RECORD_KBN = 'H'
     and 
     HJ.YUKOMUKO_JOTAI = '1' 
     and 
    GN.GAKKO_KBN_CD = HJ.GAKKO_KBN_CD
     and 
    GN.NYUGAKU_NENDO = HJ.NYUGAKU_NENDO
     and 
    GN.GAKUSEKI_NO = HJ.GAKUSEKI_NO
     and 
    GN.NONYU_YOTEI_NO = HJ.NONYU_YOTEI_NO
     and 
     M2.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
     and 
     M2.GAKUNO_KBN_CD = HJ.GAKUNO_KBN_CD(+)
     and 
     M4.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
     and 
     M4.HIMOKU_CD = HJ.KASHIKATA_HIMOKU_CD(+)
     and 
     HJ.GAKKO_KBN_CD = TM.GAKKO_KBN_CD(+)
     and 
     HJ.NYUGAKU_NENDO = TM.NYUGAKU_NENDO(+)
     and 
     HJ.GAKUSEKI_NO = TM.GAKUSEKI_NO(+)
     and 
     HJ.HIKIATE_SHORI_NO = TM.HIKIATE_SHORI_NO(+)
     and 
     HJ.HIKIATE_SHORI_EDABAN = TM.HIKIATE_SHORI_EDABAN(+)
     and 
     TM.GAKKO_KBN_CD = HK.GAKKO_KBN_CD(+)
     and 
     TM.HIYO_TOKUSHU_NO = HK.HIYO_TOKUSHU_NO(+)
     and 
     TH.GAKKO_KBN_CD = TM.GAKKO_KBN_CD(+)
     and 
     TH.HIYO_TOKUSHU_NO = TM.HIYO_TOKUSHU_NO(+)
     and 
     TH.TOKUSHU_SHONIN_JOTAI = '0'
     and 
     TM.HENKIN_KBN = '1'
      

  4.   

    GN 已经和 M2左连接  就不能和 M4左连接
    是不是这样的呢?
      

  5.   

    如果注销一部分就可以运行
    代码如下
    select NVL(TM.HENKINGAKU,0) AS HENKINGAKU, 
    NVL(TH.HENKO_RIYU,' ')  AS HENKO_RIYU, 
    NVL(TH.HENKO_RIYU_CD,' ') AS HENKO_RIYU_CD, 
    NVL(HK.SENKO_CD,' ') AS SENKO_CD, 
    NVL(HK.HIKIOTOSHI_YMD,' ') AS HIKIOTOSHI_YMD, 
    NVL(M4.HIMOKU_RN,' ') AS HIMOKU_RN 
     from 
    GN_SP_HENKIN_TBL HK,
    GN_SP_HIYO_TBL TH,
    GN_SP_KYOTSU_TBL TM,
    GN_HIKIATE_TBL HJ,
    GN_GAKUNO_TBL M2,
    GN_HIMOKU_TBL M4,
    GN_GAKUNO_JOHO_TBL GN
     where HJ.GAKKO_KBN_CD = 'OI'
     and 
     HJ.NYUGAKU_NENDO = '2000'
     and 
     HJ.GAKUSEKI_NO = '10001'
     and 
     HJ.GAKUSEKI_NO = '10001'
     and 
     HJ.KASHIKATA_RECORD_KBN = 'H'
     and 
     HJ.YUKOMUKO_JOTAI = '1' 
     and 
    GN.GAKKO_KBN_CD = HJ.GAKKO_KBN_CD
     and 
    GN.NYUGAKU_NENDO = HJ.NYUGAKU_NENDO
     and 
    GN.GAKUSEKI_NO = HJ.GAKUSEKI_NO
     and 
    GN.NONYU_YOTEI_NO = HJ.NONYU_YOTEI_NO
     and 
     M2.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
     and 
     M2.GAKUNO_KBN_CD = HJ.GAKUNO_KBN_CD(+)
     and 
     M4.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO--(+)
     and 
     M4.HIMOKU_CD = HJ.KASHIKATA_HIMOKU_CD--(+)
     and 
     HJ.GAKKO_KBN_CD = TM.GAKKO_KBN_CD(+)
     and 
     HJ.NYUGAKU_NENDO = TM.NYUGAKU_NENDO(+)
     and 
     HJ.GAKUSEKI_NO = TM.GAKUSEKI_NO(+)
     and 
     HJ.HIKIATE_SHORI_NO = TM.HIKIATE_SHORI_NO(+)
     and 
     HJ.HIKIATE_SHORI_EDABAN = TM.HIKIATE_SHORI_EDABAN(+)
     and 
     TM.GAKKO_KBN_CD = HK.GAKKO_KBN_CD(+)
     and 
     TM.HIYO_TOKUSHU_NO = HK.HIYO_TOKUSHU_NO(+)
     and 
     TH.GAKKO_KBN_CD = TM.GAKKO_KBN_CD--(+)
     and 
     TH.HIYO_TOKUSHU_NO = TM.HIYO_TOKUSHU_NO--(+)
     and 
     TH.TOKUSHU_SHONIN_JOTAI = '0'
     and 
     TM.HENKIN_KBN = '1'
      

  6.   

    M2.NENDO = GN.HIKIATESAKI_TEKIYO_NENDO(+)
     and 
    M2.GAKUNO_KBN_CD = HJ.GAKUNO_KBN_CD(+)你的连接都有问题
      

  7.   

    版主不是和你说了吗类似的这样的连接:
    a.b (+) = b.b and a.c (+) = c.c 
    is not allowed.