基于另一列中的值实现case语句 - MySQL

时间:2015-12-01 09:05:34

标签: mysql

嗨,大家好我试图在贷款期限内进行存储过程,如果图书栏填写,则会增加14天,如果视频栏已填满,则只会在我的&#39中添加7天;截止日期'列。

我让它在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 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

1 个答案:

答案 0 :(得分: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