之间匹配的日期和空我有两个MySQL
-tables这样的:MySQL查询两个表
desc students;
+---------------------------+---------------+------+-----+---------+
| Field | Type | Null | Key | Default |
+---------------------------+---------------+------+-----+---------+
| student_id | int(11) | NO | PRI | NULL |
| student_firstname | varchar(255) | NO | | NULL |
| student_lasttname | varchar(255) | NO | | NULL |
+---------------------------+---------------+------+-----+---------+
desc studentabsence;
+---------------------------+-------------+------+-----+---------+
| Field | Type | Null | Key | Default |
+---------------------------+-------------+------+-----+---------+
| student_absence_id | int(11) | NO | PRI | NULL |
| student_id | int(11) | YES | | NULL |
| student_absence_startdate | date | YES | | NULL |
| student_absence_enddate | date | YES | | NULL |
| student_absence_type | varchar(45) | YES | | NULL |
+---------------------------+-------------+------+-----+---------+
然后,我有这个MySQL
- 查询列出的学生。
查询:
SELECT s.student_id, s.student_firstname, s.student_lastname,
a.student_absence_startdate, a.student_absence_enddate, a.student_absence_type
FROM students s LEFT JOIN studentabsence a ON a.student_id = s.student_id
每当学生有这显示在列
a.student_absence_startdate
a.student_absence_enddate
a.student_absence_type
有时缺乏信息的学生在表中studentabsence
两个或两个以上的行然后他被列出两次。
我的问题是否在查询中有更具体的方法。我想列出db.students
和中的所有学生,如果在db.studentabsence
中有一行日期在开始日期和结束日期之间(例如2012-07-30),则列出学生一次该缺席信息。只有当日期有匹配时。
所以像...
... WHERE (a.student_absence_startdate OR a.student_absence_enddate) IS NULL OR
'2012-07-30' BETWEEN a.student_absence_startdate AND
a.student_absence_enddate ...
这是有点难以解释,所以让我知道如果你需要更多信息...
完美。非常感谢你。 – David 2012-07-30 14:57:54