2012-10-31 74 views
0

我不明白這個查詢有什麼問題。它給我一個編譯時錯誤「命令未正確結束」。在oracle中加入表和子查詢

內部查詢給我四條記錄。

select WGN3EVENTPARTICIPANT.EVENTUID 
from 
    (Select WGN_V_ADDRESS_1.ADDRESSUID1 as add1, 
      WGN_V_ADDRESS_1.ADDRESSUID2 as add2 
    from WGN3USER inner join 
      WGN_V_ADDRESS_1 on WGN_V_ADDRESS_1.USERID=wgn3user.USERID 
     where WGN3USER.USERNAME='FIRMWIDE\khuraj' 
    ) as ta 
    ,WGN3EVENTPARTICIPANT 
where (ta.ADDRESSUID1=WGN3EVENTPARTICIPANT.ADDRESSUID1) AND  
     (ta.ADDRESSUID2=WGN3EVENTPARTICIPANT.ADDRESSUID2) 

我在Oracle中運行它。

回答

1

你應該改變where子句中使用的字段別名:

where (ta.add1=WGN3EVENTPARTICIPANT.ADDRESSUID1) AND  
     (ta.add2=WGN3EVENTPARTICIPANT.ADDRESSUID2) 

EDITED

嘗試刪除表的別名as保留字:

) as ta ->) ta 
+0

不工作同樣的錯誤... – Amandeep

0

'\' 是需要轉義的轉義字符:

變化'FIRMWIDE\khuraj''FIRMWIDE\\khuraj'

和外WHERE子句引用了錯誤的別名:中ta.ADDRESSUID1代替ta.add1ta.ADDRESSUID2,而不是ta.add2

+0

但OP說,子查詢運行正常......? – danihp

1

正如其他人所指出的,你原來的代碼示例包含了幾個錯誤。但是,導致您報告的具體錯誤(ORA-00933)的是這樣的。

在Oracle中AS僅用於別名。所以,你需要你的別名內嵌視圖這樣的:

... where WGN3USER.USERNAME='FIRMWIDE\khuraj' 
    ) ta 
+0

+1用於指出確切的來源或錯誤。 –

0
select WGN3EVENTPARTICIPANT.EVENTUID 
from 
    (Select WGN_V_ADDRESS_1.ADDRESSUID1 as add1, 
      WGN_V_ADDRESS_1.ADDRESSUID2 as add2 
    from WGN3USER inner join 
      WGN_V_ADDRESS_1 on WGN_V_ADDRESS_1.USERID=wgn3user.USERID 
     where WGN3USER.USERNAME='FIRMWIDE\khuraj' 
    ) as ta 
    left outer join WGN3EVENTPARTICIPANT on 
ta.ADDRESSUID1=WGN3EVENTPARTICIPANT.ADDRESSUID1 AND 
     ta.ADDRESSUID2=WGN3EVENTPARTICIPANT.ADDRESSUID2