我不明白这个查询有什么问题。它给了我一个“命令未正确结束”的编译时错误。
内部查询给了我四条记录。
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中运行它。
答案 0 :(得分:1)
您应该更改where子句以使用字段别名:
where (ta.add1=WGN3EVENTPARTICIPANT.ADDRESSUID1) AND
(ta.add2=WGN3EVENTPARTICIPANT.ADDRESSUID2)
<强> EDITED 强>
尝试删除表别名中的as
保留字:
) as ta -> ) ta
答案 1 :(得分:1)
正如其他人所说,您的原始代码示例包含多个错误。但是导致您报告的特定错误的那个(ORA-00933)就是这个。
在Oracle AS
中仅用于列别名。所以你需要像这样对你的内联视图进行别名:
... where WGN3USER.USERNAME='FIRMWIDE\khuraj'
) ta
答案 2 :(得分:0)
'\'是需要转义的转义字符:
更改'FIRMWIDE\khuraj'
'FIRMWIDE\\khuraj'
外部where子句引用了错误的别名:ta.ADDRESSUID1
而不是ta.add1
和ta.ADDRESSUID2
而不是ta.add2
答案 3 :(得分: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