ORACLE SQL 错误 - 缺少右括号 - 查询 [关闭]
Posted
技术标签:
【中文标题】ORACLE SQL 错误 - 缺少右括号 - 查询 [关闭]【英文标题】:ORACLE SQL Error - Missing Right Parenthesis - Query [closed] 【发布时间】:2012-12-14 15:03:50 【问题描述】:我尝试在网上搜索答案,但不幸的是它无法解决问题。
这是我的代码:
SELECT d.driverID,
e.firstname,
e.lastname,
t.testid,
t.testType
FROM driver d
LEFT JOIN employee e
ON (e.employeeID = d.employeeID)
INNER JOIN driver_test dt
ON (d.driverID = dt.driverID WHERE dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND TO_DATE('31-JAN-2012', 'dd-mm-yyyy')))
RIGHT JOIN test t ON dt.testID = t.testID WHERE (t.testType='Alcohol');
问题出在第 4 行。它说缺少右括号。我尝试添加其他的,但问题仍然存在。
附言
我是一名学生,目前正在学习 Oracle SQL,所以我的知识仍然缺乏。
【问题讨论】:
尝试将您的WHERE
更改为 AND
@NeilKnight 由于原始查询包含多个 WHERE,您可能需要提及哪一个 :-)
【参考方案1】:
您的陈述中有几个错误
要加入多个条件,您必须使用 AND,而不是 WHERE 去掉列名和BETWEEN之间的(固定查询:
SELECT d.driverID,
e.firstname,
e.lastname,
t.testid,
t.testType
FROM driver d
LEFT JOIN employee e
ON (e.employeeID = d.employeeID)
INNER JOIN driver_test dt
ON (d.driverID = dt.driverID AND
dt.testDate BETWEEN TO_DATE('01-JAN-2012',
'dd-mm-yyyy') AND
TO_DATE('31-JAN-2012',
'dd-mm-yyyy'))
RIGHT JOIN test t
ON dt.testID = t.testID
WHERE (t.testType = 'Alcohol');
【讨论】:
【参考方案2】:你的正确查询应该是
SELECT d.driverID, e.firstname, e.lastname, t.testid, t.testType
FROM driver d
LEFT JOIN employee e ON(e.employeeID = d.employeeID)
INNER JOIN driver_test dt ON(d.driverID = dt.driverID and dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND TO_DATE('31-JAN-2012', 'dd-mm-yyyy')))
RIGHT JOIN test t ON dt.testID = t.testID
WHERE (t.testType='Alcohol');
Where
子句用于过滤,在这种情况下,您将连接逻辑操作(在连接中)。所以你只需要使用 AND。
【讨论】:
【参考方案3】:试试这个更清晰
SELECT d.driverID, e.firstname, e.lastname, t.testid, t.testType
FROM driver d
LEFT JOIN employee e ON(e.employeeID = d.employeeID)
INNER JOIN driver_test dt ON(d.driverID = dt.driverID)
RIGHT JOIN test t ON dt.testID = t.testID
where dt.testDate(BETWEEN TO_DATE('01-JAN-2012', 'dd-mm-yyyy') AND
TO_DATE('31-JAN-2012','dd-mm-yyyy'))) and t.testType='Alcohol';
【讨论】:
恐怕这行不通。以上是关于ORACLE SQL 错误 - 缺少右括号 - 查询 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Oracle SQL ORA-00907: CASE 语句中缺少右括号错误
在 oracle 10g 中出现错误 .. 错误:- ORA-00907:缺少右括号
Oracle Live SQL:ORA-00907:缺少右括号 -