更新,设置+ 90在哪里...(查询更新错误的值)

时间:2014-12-10 01:37:58

标签: mysql sql oracle sqlplus

这是家庭作业的一部分 - 只是为了让你们知道。我创建了一堆表并用值填充它们,为了结束论文,除了发布我的源代码之外我还要回答一些问题。 问题是:

按如下方式更新BOOK_COPY表。使用3个单独的更新命令将date_due设置为date_out + [FACULTY为90,STUDENT为30,FOR FOREST为40]的总和 显示更新命令。更新后,显示BOOK_COPY的以下属性:bookid,copy_num,date_out,date_due仅用于签出的书籍副本。按bookid,copy_num订购您的商家信息。

到目前为止,我尝试了许多不同的解决方案,因为我无法使其工作。我很确定我必须使用嵌套的子查询,但我的语法中的某些内容是错误的。我也试过加入,但结果更糟糕lol。使用子查询,我可以让它更新BOOK_COPY表,但它更新的其他行而不仅仅是教师成员。如果我弄清楚如何更改教师成员的due_date,那么对其他两种类型来说当然不会有问题。

到目前为止,这是我最好的两个赌注:

update BOOK_COPY
set DATE_DUE = DATE_OUT + 90 
where OUT_TO_CID
(select CID from CUSTOMER
where CATEGORY = 'Faculty');

or

update BOOK_COPY
set DATE_DUE = DATE_OUT + 90
where BOOK_COPY.OUT_TO_CID = CUSTOMER.CID and CUSTOMER.CATEGORY =
'Faculty';

Book_copy表:

create table BOOK_COPY
(Copy_Num number(5),
Bookid  number(5),
out_to_CID number(6),
Date_Out date,
Date_Due date,
Held_Until date,
held_for_CID number(6),
CONSTRAINT PKCOPY PRIMARY KEY (Copy_Num,Bookid),
CONSTRAINT FKCID FOREIGN KEY (out_to_CID) references CUSTOMER (CID),
CONSTRAINT FKHeld FOREIGN KEY (held_for_CID) references CUSTOMER (CID),
CONSTRAINT FKBookid FOREIGN KEY (Bookid) references BOOK (Bookid));

客户表:

create table CUSTOMER
(CID number(6),
First_Name varchar2(12),
Last_Name varchar2(12),
Category varchar2(7),
Balance_Due number(4,2),
SponsorID number(6),
CONSTRAINT pkCID PRIMARY KEY (CID),
CONSTRAINT fkCUSTOMER foreign key (sponsorID) references customer);

如果我的帖子有些违反规定,请告诉我。感谢您阅读它到最后; - )

1 个答案:

答案 0 :(得分:3)

试试这个 你错过了IN子句

update book_copy
set DATE_DUE = DATE_OUT +90    
where OUT_TO_CID IN
(select CID
from CUSTOMER where CATEGORY ='Faculty');