每个班级的ClassSchedule表的最新日期

时间:2012-07-06 19:57:28

标签: mysql cakephp

我的数据库查询有问题吗? 这是场景 这是一个TeacherClass表(父表)(id) enter image description here 这是一个ClassSchedule表(子表)(teacher_class_id是一个外键) enter image description here

我想通过class_schdule_date(最新日期)找出ClassSchedule Table中每个类和订单的最新日期。 (如果用cackphp查询语法编写查询,对我来说会更好。) 请帮助我。

2 个答案:

答案 0 :(得分:1)

这需要直接加入:

select tc.id, max(schedule_date) as max_schedule_date
from TeacherClass tc
left join ClassSchedule cs on cs.teacher_class_id = tc.id
group by tc.id

您可以根据需要从TeacherClass表中选择其他列 - 只需将它们添加到group by子句中。

请注意,如果该课程的没有预定日期,则需要left join,您仍会获得该课程的一行(但最长预定日期将为空)

答案 1 :(得分:0)

使用此解决方案:

SELECT 
    c.*, b.*
FROM
    (
        SELECT teacher_class_id, MAX(schedule_date) AS maxdate
        FROM classschedule
        GROUP BY teacher_class_id
    ) a
INNER JOIN
    classschedule b ON 
        a.teacher_class_id = b.teacher_class_id AND
        a.maxdate = b.schedule_date
INNER JOIN
    teacherclass c ON
        b.teacher_class_id = c.teacher_class_id