它不适用于条件

时间:2016-06-22 13:06:58

标签: mysql

我需要根据培训课程的时间长短给客户打折。 要找出通过日期,必须首先知道客户所属的组ID。 enter image description here

当我知道小组的ID时,我可以在开始培训课程时找到日期。 enter image description here

然后,按照查找日期确定折扣的大小 这是一个在MS SQL中运行良好的脚本,但在MySql中它不起作用。

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetBonus`(
idStudent CHAR(36)
)
BEGIN   
    IF (SELECT COUNT(*) FROM (SELECT IdGroupe FROM GroupeStudent WHERE IdStudent = idStudent) groupeCourse) = 1 THEN 
    BEGIN
    DECLARE CourseGroupeDate datetime;
    SET CourseGroupeDate = (SELECT Date FROM CourseGroupe WHERE Id = (SELECT IdGroupe FROM GroupeStudent WHERE IdStudent = idStudent));
        IF (CourseGroupeDate - INTERVAL NOW() MONTH)  < 3 AND  
            (CourseGroupeDate - INTERVAL NOW() MONTH) > 0
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000000';
        ELSEIF (CourseGroupeDate - INTERVAL NOW() MONTH) < 6 AND  
            (CourseGroupeDate - INTERVAL NOW() MONTH) > 3
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000001';
        ELSEIF (CourseGroupeDate - INTERVAL NOW() MONTH) < 12 AND  
            (CourseGroupeDate - INTERVAL NOW() MONTH) > 6 
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000002';
        END IF;
    END;
    END IF;
END

enter image description here

1 个答案:

答案 0 :(得分:0)

CREATE PROCEDURE `GetBonus`(
idStudent CHAR(36)
)
BEGIN   
    IF (SELECT COUNT(groupeCourse.IdGroupe) FROM (SELECT IdGroupe FROM GroupeStudent WHERE GroupeStudent.IdStudent = idStudent) groupeCourse) = 1 THEN 
    BEGIN
    SET @CourseGroupeDate := (SELECT Date FROM CourseGroupe WHERE Id = (SELECT GroupeStudent.IdGroupe FROM GroupeStudent WHERE GroupeStudent.IdStudent = idStudent));
        IF (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now()))  < 3 AND  
            (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now())) > 0
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000000';
        ELSEIF (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now())) < 6 AND  
            (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now())) > 3
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000001';
        ELSEIF (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now())) < 12 AND  
            (TIMESTAMPDIFF(MONTH, @CourseGroupeDate, now())) > 6 
            THEN SELECT * FROM Discounts WHERE Id = '00000000-0000-0000-0000-000000000002';
        END IF;
    END;
    END IF;
END

所有细节,例如,有必要指定关于字段的表名称 GroupeStudent.IdStudent = idStudent