2017-11-15 8 views
0

CourseModulesおよび学生の2つのテーブルがあります。表1の複数の値が複数の値で表2に定義されていることを確認してください。

学生は異なるモジュールに参加できます。生徒がモジュールを継承した場合、モジュールIDを持つStudentsModuleのデータベースに格納されます。

表courseModulesは、学生が証明書を取得するために必要なモジュールをすべて定義します。

私は証明書を持っているすべての学生の概要が必要です。私はこの上で完全に立ち往生しています111221

の例では、証明書を持っている唯一の学生がStudentIDを有するものであることがわかります。複数のループではなく、ループを使用せずに、1つのクエリで実行する必要があります。

Database diagram overview

私は次のことを試してみました:

SELECT StudentID, ModuleID<br> 
FROM StudentsModule<br> 
WHERE ModuleID ALL (
    SELECT OnderdeelID 
    FROM CourseModules 
    GROUP BY groupID 
) 

しかし、私はこだわっています。

+0

ほとんどの人がフォーマットされたテキストではなく画像たい(または画像へのリンクを。)試してみてください – jarlh

+0

あなたは何を試してみましたか?あなたの現在のクエリの試みを私たちに教えてください。 – jarlh

+0

コメントではありません。代わりに質問を編集してください。 – jarlh

答えて

1

ここでこの

select s.studentId, s.moduleId, cc.courseCount, cd.courseDone 
from StudentsModule s 
join CourseModulec on s.moduleId = c.moduleId 
join (select count(*) as courseCount, groupId from CourseModule group by groupId) as cc on cc.groupId = c.groupId 
join (select count(*) as courseDone, studentId from StudentsModule s1 join CourseModule c1 on s1.moduleId = c1.moduleId group by s1.studentId) as cd on cd.studentId = s.studentId 
where cc.courseCount = cd.courseDone 
+0

ありがとう、これは私に一歩手伝った。私は3000の結果を得ました、私はいくつかのものを変更する必要があったが、あなたは本当にうまく私を助けた! 多くの感謝!!! –

関連する問題