2017-03-12 297 views
0

我有三个表:多对多的关系表

  • 学生: studentid , 名字 , 姓氏, 大, 学年 ,

  • 课程: studentid, courseid , coursename , 部门 ,

  • students_courses: 姓 , studentid , courseid ,

我需要写一个SQL查询,显示该学生正在服用哪些课程有一个学生应该能够注册超过一门课程,一门课程应该可以由多名学生完成。

我创建的查询,但我得到一个错误,有人可以帮助。

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