我试图在Oracle中执行弹出输入。我使用:DS.SPECIALISE
和:AD.STATUS
作为输入。
但是一旦我提交了我的输入值,就会显示
ORA-00920:无效的关系运算符
并且无法生成输出。
这是我的SQL查询:
select DT.DOCTOR_ID, DT.NAME, AD.STATUS, DS.SPECIALISE
from DOCTOR_SPECIALISE DS
INNER JOIN DOCTOR DT
on DS.DOCTOR_ID = DT.DOCTOR_ID
INNER JOIN AVAILABILITY_DATE AD
on DT.DOCTOR_ID = AD.DOCTOR_ID
WHERE :DS.SPECIALISE
AND :AD.STATUS;
我这样做了,但我不明白为什么我使用内连接无法生成数据。
Select DT.DOCTOR_ID, DT.NAME, AD.STATUS, DS.SPECIALISE from DOCTOR_SPECIALISE DS, DOCTOR DT, AVAILABILITY_DATE AD
WHERE :SPECIALISE=DS.SPECIALISE AND
DT.DOCTOR_ID=DS.DOCTOR_ID AND :STATUS=AD.STATUS;
答案 0 :(得分:0)
也许您需要以下内容:
Select DT.DOCTOR_ID, DT.NAME, AD.STATUS, DS.SPECIALISE
from DOCTOR_SPECIALISE DS
INNER JOIN DOCTOR DT
on DS.DOCTOR_ID = DT.DOCTOR_ID
INNER JOIN AVAILABILITY_DATE AD
on DT.DOCTOR_ID = AD.DOCTOR_ID
WHERE :SPECIALISE = DS.SPECIALISE
AND :STATUS = AD.STATUS;
答案 1 :(得分:0)
我认为问题在于语法无效:
WHERE :DS.SPECIALISE
AND :AD.STATUS;
之后:DS_SPECIALISE解析器期望关系运算符不是保留字AND
Aleksej上面的回答为你解决了这个问题
答案 2 :(得分:-1)
SELECT DT.DOCTOR_ID, DT.NAME, AD.STATUS, DS.SPECIALISE
FROM DOCTOR_SPECIALISE DS, DOCTOR DT, AVAILABILITY_DATE AD
WHERE :SPECIALISE=DS.SPECIALISE
AND DT.DOCTOR_ID=DS.DOCTOR_ID
AND :STATUS=AD.STATUS;