ユーザー、コース、登録の 3 つのテーブルがあります。Enrollments テーブルには外部キーが含まれているため、それぞれ結合を行うことができます: users.pk1 = registrations.u_pk1 および course.pk1 = registrations.c_pk1。Users テーブルには、教授と学生の両方が含まれています。ここまでは順調ですね!
私がやろうとしているのは、名前に文字列 2013 が含まれるすべてのコースのリストを生成し、次に各コースのすべての教授を取得し、最後に、以下のみを持つ登録テーブルから各コースのすべての学生の数を取得することです列: pk1、c_pk1、u_pk1、役割。
これは私がやろうとしていることですが、 Count はサブクエリを引数として受け入れないため、明らかに機能しません:
select c.name, u.name, count(select * from enrollments where role = 'student')
from courses c, users u, enrollments e
where u.pk1 = e.u_pk1 and c.pk1 = e.c_pk1
and c.name like '%2013%' and e.role = 'professor'
order by c.name;
これを希望どおりに機能させる方法に関するヒントはありますか?
...
後で編集:Trogdorのソリューションを使用して、カウントの観点から機能させることができましたが、コースを一度だけリストし、その後にすべての教授の名前を1行に表示する方法に行き詰まっています。たとえば、むしろ次のようなものがあります。
course1 prof1 13
course1 prof2 13
course2 prof3 25
代わりに、次のようになります。
course1 prof1,prof2 13
course2 prof3 25
など...どうすればこれを達成できるかについてのヒントはありますか?