【问题标题】:SQL Query using INNER JOIN使用 INNER JOIN 的 SQL 查询
【发布时间】:2012-11-04 18:30:22
【问题描述】:

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

是我实验室的问题。

共有三个表students,courses,registration

我可以获取在课程中注册的学生的姓名

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

但它在 on 子句中给了我一个错误 unknown column students.studentid。

【问题讨论】:

  • 学生的栏目是什么?
  • 另外你是如何加入表courses
  • 对吗:`加入注册studentid=registration.student.id`我觉得你有错别字,你能改正吗?
  • 仅供参考,您没有使用联接来连接课程表
  • 抱歉忘记在学生中添加列是 studentid,firstname,lastname,major,admitdate,graddate,gender,dob

标签: mysql sql


【解决方案1】:

您非常接近,错过了registrationcourses 之间的连接条件。你有一个奇怪的隐式和显式INNER JOINs 组合。您加入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

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

标记输出列 Student First、Student Last、Course Number 和 Course Name

【讨论】:

  • 这给了我一个错误,未知列 'courses.courseid' in 'on Clause'
  • @dsquaredtech 不可能,除非你拼错了它你使用了像INNER JOIN courses AS c ON...这样的表别名
  • 在您上面的评论中,您说课程中的列是 课程中的列 courseid,coursename 尽管您没有在 SELECT 列表中提到 coursenumber 列..
  • 啊哈,我是个白痴,这可能不是 courseid 它是 coursenumber
  • @dsquaredtech 同时作为registration.coursenumbercourses.coursenumber?在连接的ON 子句中替换正确的列名,您应该会做生意。
【解决方案2】:
select firstname,lastname,coursenumber,coursename from students
inner join registration on students.studentid=registration.studentid
JOIN courses  ON courses.courseid = registration.courseid

您在查询中提到了courses,但您没有提到任何join

【讨论】:

  • 我一直在尝试这些查询,并得到一个错误,类似于我从学生那里选择名字、姓氏、课程编号、课程名称、课程内部加入注册 student.studentid=registration.studentid 时得到的错误,除了现在on 子句中的未知列是 courses.courseid
  • 很高兴您的问题得到解答,恭喜您加入 S/O!将来,如果您有更多与 MySQL 相关的问题,对您查询中涉及的每个表运行 SHOW CREATE TABLE _tablename_ 会有所帮助。
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 2015-01-10
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多