0

数据库查询有问题?这是场景这是一个TeacherClass表(父表)(id) 在此处输入图像描述 这是一个ClassSchedule表(子表)(teacher_class_id是外键) 在此处输入图像描述

我想从 ClassSchedule Table 中找出每个班级的最新日期,并按 class_schdule_date(最新日期)排序。(如果您用 cackphp 查询语法编写查询,对我来说会更好。)请帮助我。

4

2 回答 2

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如果课程没有预定日期,您仍然会得到该课程的一行(但最大预定日期将为空)

于 2012-07-06T20:09:30.687 回答
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
于 2012-07-06T20:03:39.297 回答