0
create procedure fine()
begin
declare a integer(10);
declare b integer(10);
declare c integer(10);
declare d integer(10);
declare cal_fine cursor for select book_id,datediff(return_date,issue_date)
from return_book where datediff(return_date,issue_date)>10;
open cal_fine;
myloop:loop
fetch cal_fine into a,b;
set c=(b-10)*5;
update return_book set fine=c where book_id=a;
end loop;
close cal_fine;
end;
我有這段代碼找到很好,但問題是,我的issue_date不在return_book表中,所以我必須加入issue_book和return_book但是那麼如何使用datediff功能? PLZ幫我如何使用datediff功能加入
更新語句來實現什麼是你的代碼看起來像聯接到issue_book? –
@ P.Salmon聲明cal_fine光標選擇ib.issue_date,rb.return_date從return_book RB,issue_book IB其中rb.book_id = ib.book_id 但後來我該怎麼辦有關DATEDIFF? 這個? :datediff(return_date,issue_date)from return_book,其中 datediff(return_date,issue_date)> 10; – N97
如果您的問題是我是否需要重複where條款中的datediff計算?答案是肯定的,你這樣做,因爲在where子句來之前選擇在執行順序看https://stackoverflow.com/questions/24127932/mysql-query-clause-execution-order。您還應該更改隱式聯接和顯式聯接。 –