Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据3个参数(加入日期、出生日期、学校学年)检查学生是否为托儿所、学前教育、幼儿园_Php_Mysql - Fatal编程技术网

Php 根据3个参数(加入日期、出生日期、学校学年)检查学生是否为托儿所、学前教育、幼儿园

Php 根据3个参数(加入日期、出生日期、学校学年)检查学生是否为托儿所、学前教育、幼儿园,php,mysql,Php,Mysql,我目前在代码中应用学年的概念时遇到问题, 如果我不申请,有一件事可能会出错 学年的概念,只需使用生日和当前日期即可获得孩子的水平 它无法检测出孩子是否还在幼儿园或者已经是幼儿园了。 我已经意识到,要实现这一点,我需要一个名为“Date Joined”的列 我已经把它加到我的桌子上了。现在我的问题是如何使用它 我到目前为止所做的一切 我当前的sql语句分为3条,我将其命名为ClassType ClassType **4** - 4 years old below (Nursery) **5** -

我目前在代码中应用学年的概念时遇到问题, 如果我不申请,有一件事可能会出错 学年的概念,只需使用生日和当前日期即可获得孩子的水平 它无法检测出孩子是否还在幼儿园或者已经是幼儿园了。 我已经意识到,要实现这一点,我需要一个名为“Date Joined”的列 我已经把它加到我的桌子上了。现在我的问题是如何使用它

我到目前为止所做的一切

我当前的sql语句分为3条,我将其命名为ClassType

ClassType
**4** - 4 years old below (Nursery)
**5** - between 4 yr old and 6 yr old (Pre-k)
**6** - 6 years old above (kindergarten)
sql语句:

SELECT 
c.ChildID,
c.ChildName,
TIMESTAMPDIFF(YEAR, c.Birthdate, CURDATE()) as Age,
cls.ClassID, 
CASE WHEN
 (cls.ClassTypeAgeNo = 2) AND TIMESTAMPDIFF(Year, c.Birthdate, CURDATE()) <= 4 THEN 4 
WHEN
(cls.ClassTypeAgeNo = 2) AND TIMESTAMPDIFF(Year, c.Birthdate, CURDATE()) = 5 THEN 5
WHEN
WHEN (cls.ClassTypeAgeNo = 2) AND TIMESTAMPDIFF(Year, c.Birthdate, CURDATE()) >= 6 THEN 6 
END AS ClassType  

        FROM m_Student c 
        inner join m_Class cls on c.ClassID = cls.ClassID
上述查询的结果 我期望的结果仍然是一样的,但它必须检查孩子 是否仍在同一水平上取决于学年

我当前的代码可以正确地检查孩子是否在什么级别,但它不能 检测子对象是否仍在同一级别或移动到另一级别

编辑:
学校从2015年4月1日开始,到2016年3月31日结束。

关于加入日期如何影响水平没有足够的信息,但我认为解决方案可能接近这一点:

SELECT 
c.ChildID,
c.ChildName,
TIMESTAMPDIFF(YEAR, c.Birthdate, CURDATE()) as Age,
cls.ClassID, 
CASE WHEN
 (cls.ClassTypeAgeNo = 2) AND (TIMESTAMPDIFF(Year, c.Birthdate, c.date_joined) - 
CASE WHEN MONTH(c.date_joined) > 4 THEN 1 ELSE 0 END) <= 4 THEN 4 
WHEN
 (cls.ClassTypeAgeNo = 2) AND (TIMESTAMPDIFF(Year, c.Birthdate, c.date_joined) - 
CASE WHEN MONTH(c.date_joined) > 4 THEN 1 ELSE 0 END) = 5 THEN 5
 WHEN
 (cls.ClassTypeAgeNo = 2) AND (TIMESTAMPDIFF(Year, c.Birthdate, c.date_joined) - 
CASE WHEN MONTH(c.date_joined) > 4 THEN 1 ELSE 0 END) >= 6 THEN 6 
END AS ClassType  

        FROM m_Student c 
        inner join m_Class cls on c.ClassID = cls.ClassID

帮助我们通过提供示例数据和预期结果来帮助您。我发布了一些示例数据,但我没有足够的图片代表,因此我将编写它。