私は格闘技クラブの学生管理システムを持っています。さまざまな種類の情報がさまざまな DB テーブルに保存されています。
出席と採点については、新しいイベントごとに新しい行が追加されます。
私は学生テーブルから情報を取得し、出席テーブルから出席した合計レッスンをリストし、成績テーブルから現在の成績情報を見つけて、grades_list テーブルに設定された順序でこれを並べ替えようとしています。
だから私はこれを持っています:
SELECT * , COUNT( date ) AS `count`
FROM attendance a
JOIN students s ON a.student_id = s.student_id
JOIN gradings g ON g.student_id = s.student_id
JOIN grades_list gl ON gl.grade = g.grade
WHERE s.class <>'Little Monsters'
AND date
BETWEEN'2013-01-01'
AND now()
GROUP BY a.student_id
ORDER BY gl.ID
これは現在、正しい種類のことを行いますが、すべての結果を表示しているわけではありません。各人の等級に複数のエントリがある場合 (最終的にはそうなるでしょう)、1 つの結果が表示されますが、最新のものは表示されません。現在、グレーディング テーブルに 2 人の人物がいて、それぞれ 2 つのエントリがあります。そのうちの 1 人はまったく表示されず、もう 1 人は最も古いレコードを表示し、最新のレコードを表示する必要があります。
すべてが理にかなっていることを願っています。
乾杯。