0

データベースクエリに問題がありますか? ここにシナリオがありますこれはTeacherClassテーブル(親テーブル)(id) ここに画像の説明を入力 であり、これはClassScheduleテーブル(子テーブル)です(teacher_class_idは外部キーです) ここに画像の説明を入力

各クラスの ClassSchedule テーブルから最新の日付を調べて、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場合に必要であることに注意してください。クラスの行を取得します (ただし、最大予定日は null になります)。

于 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 に答える