数据库查询有问题?这是场景这是一个TeacherClass表(父表)(id)
这是一个ClassSchedule表(子表)(teacher_class_id是外键)
我想从 ClassSchedule Table 中找出每个班级的最新日期,并按 class_schdule_date(最新日期)排序。(如果您用 cackphp 查询语法编写查询,对我来说会更好。)请帮助我。
这需要一个简单的连接:
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
如果课程没有预定日期,您仍然会得到该课程的一行(但最大预定日期将为空)
使用此解决方案:
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