データベースクエリに問題がありますか? ここにシナリオがありますこれはTeacherClassテーブル(親テーブル)(id) であり、これはClassScheduleテーブル(子テーブル)です(teacher_class_idは外部キーです)
各クラスの ClassSchedule テーブルから最新の日付を調べて、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
場合に必要であることに注意してください。クラスの行を取得します (ただし、最大予定日は null になります)。
この解決策を使用してください:
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