使用INNER JOIN的SQL查询

时间:2012-11-16 02:55:35

标签: mysql sql

  

编写一个显示学生姓名,姓氏,课程编号和课程名称的查询   对于所有上课的学生 - 使用INNER加入。标记输出列Student First,Student Last,   课程编号和课程名称。你应该有7行。

是我实验室的问题。

有三个表学生,课程,注册

我可以通过

获取在课程中注册的学生的姓名
select firstname,lastname from students
inner join on registration students.studentid=registration.studentid

但是当我试图获取老师想要从课程表中返回的其他数据时它不起作用我尝试了一百万件但是对我来说有意义的是

select firstname,lastname,coursenumber,coursename from students,courses
inner join registration on students.studentid=registration.studentid

但它给了我一个错误的未知专栏学生。在课程中学习。

2 个答案:

答案 0 :(得分:2)

你非常接近,错过了registrationcourses之间的加入条件。你有一个奇怪的隐式和显式INNER JOIN混合。您与courses的加入应该是另一个INNER JOIN,通过registration加入students

SELECT
  firstname, /* <-- don't forget to label your columns as required */
  lastname,
  coursenumber,
  coursename 
FROM
  students
  /* `students` map into courses via many-to-many relation in `registration` */
  INNER JOIN registration on students.studentid = registration.studentid
  /* Inner join through `registration` into `courses` */
  INNER JOIN courses ON registration.courseid = courses.courseid

不要忘记列别名以满足列输出命名要求。使用AS列表中的SELECT关键字。我会留下这部分作业给你解决。

  

标记输出列学生优先,学生最后,课程编号和课程名称

答案 1 :(得分:0)

select firstname,lastname,coursenumber,coursename from students
inner join registration on students.studentid=registration.studentid
JOIN courses  ON courses.courseid = registration.courseid

您在查询中提到courses,但您没有join任何内容。