2017-03-12 16 views
0

私は3つのテーブルがあります。多くの関係に多くのテーブル

  • 学生: studentid 、 最初の名前 、 姓、 大手、 schoolyear 、

  • コース: をstudentid、 courseid 、 coursename 、 部門 、

  • students_courses: FIRSTNAME 、 studentid 、 courseid 、

私は学生はどのコース一人の学生服用している番組がすべきことをSQLクエリを記述する必要があります複数のコースに登録することができ、1つのコースは複数の学生が受講することができます。

私が作成したクエリでエラーが発生していますが、誰かを助けることができます。

select 

students.firstname as 'name', 
GROUP_CONCAT(courses.coursename) as 'course name' 

from students 
join students_courses on students.studentid = students_courses.studentid 

join courses on courses.courseid = students_courses.Courseid 

group by students.Firstname 

order by courses.coursename 
+0

最初に:なぜグループ連結を使用しますか? 2あなたが得たエラーは何ですか? –

+0

私は間違いを犯していません、それは残念です。クエリが実行する方法が実行されていない – Rafael123

答えて

0

テーブルの構造が間違っているようです。

表の学生:OK 表コース:STUDENT_ID テーブルstudent_coursesを削除:削除student_name

その後の句が必要な場合は、必要に応じて追加この方法

SELECT * FROM students AS s LEFT JOIN student_courses AS sc ON s.id=sc.student_id LEFT JOIN courses AS c ON c.id=sc.course_id 

内のデータを照会します。

すべてのユーザーが実行するすべてのコースを表示します。コースを持たないユーザーも印刷されます。

+0

こんにちは、私はmysqlとクエリを書くことで新しいです。私はあなたが私に与えた情報を入れて、それは曖昧であると言います。 – Rafael123

+0

"WHERE句"を書く必要はありませんが、 "WHERE student_id = variable"または "WHERE course_id = variable"もちろん、取得しようとしているリソースのIDと興味のあるjnです。 –

+0

私はクエリを書く必要があり、私はエラーが発生しています。これをどうすれば解決できますか? – Rafael123