我的数据库查询有问题吗? 这是场景 这是一个TeacherClass表(父表)(id) 这是一个ClassSchedule表(子表)(teacher_class_id是一个外键)
我想通过class_schdule_date(最新日期)找出ClassSchedule Table中每个类和订单的最新日期。 (如果用cackphp查询语法编写查询,对我来说会更好。) 请帮助我。
答案 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