2015-12-01 65 views
1

嗨,大家好,我試圖做一個貸款期限的存儲過程,其中如果這本書中填入這將增加14天,如果視頻中填入它只會在我的「截止日期」欄中添加7天。實現基於另一個列中的值case語句 - MySQL的

我已經在使用NOW()語句記錄我的會員ID和交易日期,並從我的物品表中提取,如果它的一本書或一個帶有物品編號的電影,我只是不確定我將如何去做截止日期。我已經玩過並做了一個案例聲明,說明了我希望如何工作,但不確定如何將其實施到我的存儲過程代碼中。

存儲過程:

CREATE PROCEDURE `Loan Renew`(
in Member_ID INT(11), 
in `ITEM ID` INT(11)) 
INSERT INTO loan_table (Member_ID,item_id,book_id,Video_id,Transaction_date,Due_Date) 
select Member_ID,Item_ID,Book_ID,video_id,NOW() 
FROM item_table 
Where `ITEM ID` =Item_table.Item_id 

case語句:

CASE book_ID 
WHEN Book_ID IS NOT NULL THEN DATE_ADD(transaction_date,INTERVAL 14 DAY) 
ELSE DATE_ADD(transaction_date,INTERVAL 56 DAY) 
END AS 'Due_date' 
from loan_table 
Where `ITEM ID` =Item_table.Item_id 
+0

檢查。 http://stackoverflow.com/questions/8600671/mysql-select-statement-with-case-or-if-elseif-not-sure-how-to-get-the-result/8600850#8600850 –

回答

0

怎麼樣這樣:

CREATE PROCEDURE `Loan Renew`(
in Member_ID INT(11), 
in `ITEM ID` INT(11)) 
INSERT INTO loan_table (Member_ID,item_id,book_id,Video_id,Transaction_date,Due_Date) 
select Member_ID,Item_ID,Book_ID,video_id,NOW(), 
     CASE -- book_ID 
     WHEN Book_ID IS NOT NULL THEN DATE_ADD(NOW(),INTERVAL 14 DAY) 
     ELSE DATE_ADD(NOW(),INTERVAL 56 DAY) 
     END 
FROM item_table 
Where `ITEM ID` =Item_table.Item_id 
+0

我似乎得到一個未知列「TRANSACTION_DATE」字段列表」現在 – Muzza92

+0

對不起,編輯,與現在()適用於‘TRANSACTION_DATE’ –

+0

完美非常感謝你! – Muzza92