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
    ,WGN3EVENTPARTICIPANT 
 where (ta.ADDRESSUID1=WGN3EVENTPARTICIPANT.ADDRESSUID1) AND    
       (ta.ADDRESSUID2=WGN3EVENTPARTICIPANT.ADDRESSUID2)

我在 Oracle 中运行它。

4

4 回答 4

1

正如其他人所指出的,您的原始代码示例包含几个错误。但是,导致您报告的特定错误 (ORA-00933) 的原因是这个。

在 OracleAS中仅用于别名。所以你需要像这样给你的内联视图起别名:

... where WGN3USER.USERNAME='FIRMWIDE\khuraj'
    )  ta
于 2012-10-31T11:03:38.753 回答
1

您应该更改 where 子句以使用字段别名:

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

已编辑

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

) as ta -> ) ta
于 2012-10-31T10:59:13.927 回答
0

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

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

并且外部 where 子句引用了错误的别名:ta.ADDRESSUID1代替ta.add1ta.ADDRESSUID2代替ta.add2

于 2012-10-31T11:01:49.717 回答
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
于 2012-10-31T11:05:06.183 回答