4

我被要求为我的 DAD 课程做的一个特定问题如下:

• 编写执行以下操作的 SQL 语句: • 显示满足以下任何条件的电影的 StuId、电影编号、标题、运行时间、评级代码、评级简短描述、tmdb 分数:评级代码 M 加上运行时间在 160- 165(含)G 评级代码加上运行时间小于 90 PG 评级代码加上运行时间 120 或 121 MA 评级代码加上运行时间 185 分钟或更多 • 查询还必须只包括 tmdb_score 超过6.1. • 列表必须是升序电影无序列。

所以作为回应,我写了这个:

SELECT '103040698' as StudID, M.MovieNo, M.Title, M.RunTime, M.RatingCode, M.TMDB_Score, R.SHORTDESC, C.COLOURNAME
FROM Movie0698 M
INNER JOIN RATING0698 R
ON M.RatingCode = R.RatingCode
INNER JOIN COLOURTYPE0698 C
ON M.COLOURCODE = C.COLOURCODE
WHERE (M.RatingCode = 'M' AND M.RunTime BETWEEN 160 AND 165 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'PG' AND M.RunTime BETWEEN 120 AND 121 AND M.TMDB_Score > 6.1)
OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)
ORDER BY M.MovieNo ASC;

但是,错误消息

'OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
                 
Error at line 8:
ORA-00936: missing expression' 

不断出现。在线程序(SQLjunior)指出'='是第8行中的问题。我不确定我哪里出错了,因为我一直在通过建议的其他问题使用相同的格式由我的导师和这些查询运行良好。

4

2 回答 2

1

你有三个错别字:

OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1)

= <应该<=是。

并在:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

您需要删除BETWEEN.

和:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

是缺少(后的开口OR

于 2021-04-30T08:43:58.600 回答
1

“小于或等于”运算符是<=, not >=。即,在 for 的条件下M.RunTime,您应该拥有M.RunTime <= 90而不是M.RunTime =< 90

于 2021-04-30T08:35:11.730 回答