在oracle中加入表和子查询

问题描述:

我不明白这个查询有什么问题。它给我一个编译时错误“命令未正确结束”。在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中运行它。

你应该改变where子句中使用的字段别名:

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

EDITED

尝试删除表的别名as保留字:

) as ta ->) ta 
+0

不工作同样的错误... – Amandeep

'\' 是需要转义的转义字符:

变化'FIRMWIDE\khuraj''FIRMWIDE\\khuraj'

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

+0

但OP说,子查询运行正常......? – danihp

正如其他人所指出的,你原来的代码示例包含了几个错误。但是,导致您报告的具体错误(ORA-00933)的是这样的。

在Oracle中AS仅用于别名。所以,你需要你的别名内嵌视图这样的:

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

+1用于指出确切的来源或错误。 –

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