php - 根据 3 个参数(加入日期、出生日期、学校学年)检查学生是否在托儿所、学前类、幼儿园

标签 php mysql

我目前在我的代码中应用学年的概念时遇到问题, 如果我不申请,可能会出错的一件事 学年的概念,只使用生日和当前日期来获得 child 的水平 是它不会检测那个 child 是否仍然是托儿所或已经是学前类。 我已经知道要完成这项工作,我需要一个名为“加入日期”的列 我已经把它加到我的 table 上了。现在我的问题是如何使用它。

到目前为止我做了什么。

我当前的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

以上查询的结果 我想要的结果仍然是一样的,但它必须检查 child 是否 仍处于同一水平或不基于学年

我当前的代码可以正确检查 child 是否处于什么水平,但不能 检测 child 是否仍在同一层或移动到另一层。

编辑: 学校从2015/04/01开学到2016/03/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

关于php - 根据 3 个参数(加入日期、出生日期、学校学年)检查学生是否在托儿所、学前类、幼儿园,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30498618/

相关文章:

php - 在 CodeIgniter 中比较日期

php - Solr PHP 客户端与 file_get_contents?

mysql - 来自多个表的 LEAST 和 GREATEST 日期值,laravel 方式

mysql - 对不同数据库的嵌套查询

mysql - 如何使用不同的联接对一列进行两次选择?

php - 从具有多行的关系表中获取数据

php - PHP 数组中的 MySQL 数据

php - 压缩包含 php、javascript、html 和 css 的网页

mysql - 动态 SQL 在使用 JDBC 和 MySQL 的 Google Apps 脚本上返回 'syntax error'

java - 为什么尝试在 PHP 和 Android 中使用套接字时连接被拒绝?