【问题标题】:Missing keyword error ora-00905缺少关键字错误 ora-00905
【发布时间】:2016-03-12 19:58:51
【问题描述】:
select line_number, TIME

from LINE join LINE_STOP join PASSAGE

where time = (select count (Time)

from passage

where time between 500 and 620)

group by line_number;

谁能告诉我我的错误在哪里?

【问题讨论】:

  • from LINE join LINE_STOP join PASSAGE 您是否要连接三个表?您错过了标识表中相同列的 ON 子句
  • 这个查询问题太多了不提建议:time是Oracle保留字。 from 中缺少 on 关键字。您正在将名为time 的列与计数进行比较,这似乎不合理。 group byselect 不一致。

标签: sql oracle ora-00905


【解决方案1】:

@Gordon Linoff 更正!! TIME 是 Oracle 中的 PL/SQL 保留字,可用于独立于 PL/SQL 代码的 SQL 查询。但是在这里,将时间与计数值等同起来确实会引起混淆。我猜,Valerie 正试图用它来计算次数,line_number 重复或类似的东西。

“缺少关键字”错误是因为您没有使用“ON”关键字,如果您使用 Join 语句,这是强制性的。

@Valérie Hallé 如果你想像我上面假设的那样尝试这个,

SELECT L.LINE_NUMBER, L.TIME
  FROM LINE L
  JOIN LINE_STOP LS ON LS.LINE_NUMBER = L.LINE_NUMBER 
  JOIN PASSAGE P    ON P.LINE_NUMBER = L.LINE_NUMBER
 WHERE L.TIME IN (SELECT COUNT (TIME)
                    FROM PASSAGE
                   WHERE TIME BETWEEN 500 AND 620);

这应该可行。如果没有,请回复我:-)

【讨论】:

  • 是的,我正在尝试计算公共汽车在车站经过的次数。
  • 这是我现在拥有的,但它仍然无法正常工作!感谢您的帮助!
  • SELECT LINE_NUMBER, TIME FROM JOIN LINE_STOP ON LINE_NUMBER = LINE_NUMBER JOIN PASSAGE ON LINE_NUMBER = LINE_NUMBER WHERE TIME IN (SELECT COUNT (TIME) FROM PASSAGE WHERE TIME BETWEEN 500 and 620) on (select Hours|| ''||从过去开始的分钟数);
  • 我认为我提供的查询已经过验证。如果你能准确说出你需要什么,我可以提供相同的解决方案
  • 这是我的作业问题:显示每条公交线路所需的公交车数量。
猜你喜欢
  • 2019-01-18
  • 1970-01-01
  • 2010-09-23
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多