0

私は格闘技クラブの学生管理システムを持っています。さまざまな種類の情報がさまざまな 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 人は最も古いレコードを表示し、最新のレコードを表示する必要があります。

すべてが理にかなっていることを願っています。

乾杯。

4

2 に答える 2

0
  1. あなた以降GROUP BY a.student_id、各生徒は 1 回しか表示されません。

  2. 結合によってレコードが消える場合があります。生徒が不在の場合grades_list、参加するものがないため、記録は表示されません。おそらくしたいでしょうLEFT JOIN

于 2013-04-13T09:01:13.043 に答える