0 mysql sql oracle date oracle-apex
问:创建一个视图,调用TITLE_NOTRETURNED以显示尚未返回的媒体的电影标题和 media_id。视图不应允许任何数据操作语言操作。
我需要创建作为附加问题的视图,但它返回我缺少表达式的错误。
租借历史表:租借日期、归还日期
媒体表:媒体ID、格式
电影表:标题 ID,标题
我的代码:
CREATE VIEW TITLE_NOTRETURNED AS
SELECT mov.title, m.mediaid, r.rentaldate
FROM Movies mov, Media m, rental_history r
WHERE mov.titleid = m.titleid
AND m.mediaid = r.mediaid
AND r.returndate > (SELECT CONVERT(DATE, getdate() )
);
Run Code Online (Sandbox Code Playgroud)
另外,我之前尝试过将rental_history r更改为rentaldate r,但它也不起作用。
ERD:
如果这是 Oracle,它会给出ORA-00936: missing expression因为
select convert(date, getdate())
Run Code Online (Sandbox Code Playgroud)
缺少一个from条款。
一旦你解决了这个问题,convert用于字符集,而不是日期,date是用于引入日期文字的关键字,例如date '2020-12-23',并且没有getdate()函数(除非你自己编写了一个)。
固定版本(包括防止 DML 的要求)将是:
create or replace view title_not_returned as
select mov.title, m.mediaid, r.rentaldate
from movies mov
join media m on m.titleid = mov.titleid
join rental_history r on r.mediaid = m.mediaid
where r.returndate > trunc(sysdate)
with read only;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,租金返还日期是如何填充的?如果它们默认为某个遥远的未来日期,例如 9999 年 12 月 31 日,然后在返回时更新为实际日期,这将起作用(但也许应该在视图中使用特殊日期)。如果它们以 null 开头,表示尚未返回,则不会得到任何结果。