2017-07-27 7 views
-1

ヨーロッパ系の学校システム用のデータベースはかなり簡単です。学校は複数のクラスを持つことができます。教師はどの学校からも1つ以上のクラスを割り当てることができます。各生徒は1つのクラスを割り当てられ、クラスに割り当てられた各教師から複数の成績を得ることができます。複数のネストされた結合がSQLクエリにあります

生徒のクラスに天気の有無のチェックが割り当てられているかどうかは、ソフトウェア自体で確認できます。ここで

は、データベース・ダイアグラムである:

Database Diagram

私はSQLを使用して、以下のレポート取り戻す行う必要があります。クラスによって

  • レポートのグレードを:クラスを選択し、テーブルを持っていますすべての生徒の成績、平均とその成績を割り当てた教師

  • レポート学校での平均教師の学年度:教師名、教師のクラス、および教室全体の平均の成績を表示するテーブルを表示します(テーブルの構造:教師、学生、Grade_01、Grade_02、Grade_03、Grade_04、平均グレード)。 。 (テーブル構造:先生、クラス、平均グレード):

    SELECT grades.grade_id, teachers.teacher_name, students.student_name, grades.grade_01, grades.grade_02, grades.grade_03, grades.grade_04 
    FROM grades 
    JOIN teachers 
    ON teachers.teacher_id = grades.teacher_id 
    JOIN students 
    ON students.student_id = grades.student_id 
    WHERE students.class_id = ? 
    

    しかし、私にはありません

は、私は、次のSQLコードを使用して表「クラスによってレポートグレード」最初の操作を行うために管理しました2番目のレポートを作成する方法を知っている、私は無数の時間を試みた...

教師名、彼のクラス、およびクラス全体の平均等級を持つテーブルを表示するにはどうすればよいですか?

ご協力いただければ幸いです。あなたの答えAnumR

ため

+1

コードを適切にフォーマットします。すべてが1行であれば読むのは難しいです。 – Eric

+0

"とクラス全体の平均成績" - どれを?グレード_01、グレード_02、...? –

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

答えて

0
select 
teacher_name as 'Teacher', 
class_name as 'Class', 
avg(grade_01 + grade_02 + grade_03 + grade_04) as 'Average Grade' from teachers 
join class_teacher on teachers.teacher_id = class_teacher.teacher_id 
join clases on clases.class_id = class_teacher.class_id 
join grades on grades.teacher_id = teachers.teacher_id 
group by teacher_name, class_name 
+0

返事をありがとう。私はコードをテストしましたが、それは私にすべてのクラスの平均を与えてくれます。クラス平均の代わりに私に教師の平均を与えています。 –

0

おかげで私はあなたが学校のIDによって、教師やクラスを選択することができますので、それを作るために提供されたコードを変更しました。

しかし、コードでは、クラスではなく、教師によって平均が出力されます。

SELECT teacher_name AS 'Teacher', class_name AS 'Class', 
AVG(grade_01 + grade_02 + grade_03 + grade_04)/4 AS 'Average Grade' FROM teachers 
JOIN class_teacher ON teachers.teacher_id = class_teacher.teacher_id 
JOIN clases ON clases.class_id = class_teacher.class_id 
JOIN grades ON grades.teacher_id = teachers.teacher_id 
WHERE clases.school_id = 2 
GROUP BY teacher_name, class_name 
0

ここでの基本的な問題(と私はあなたが対処したくないと思う)は、貧弱な設計の1つです。

決定的な解決策決してますが、以下のように、有効な設計は次のようになります。

Teacher, Student, Grade, Score 

平均等級はその後、その場で計算ものになるだろう。

関連する問題