【问题标题】:How to return an output table from three separate tables that has one row from each input table in MySQl Workbench?如何从 MySQl Workbench 中的每个输入表中返回一行的三个单独表中的输出表?
【发布时间】:2019-05-24 17:38:12
【问题描述】:

问题如下:

编写一个显示学生成绩单的查询。查询应该输出列:

  1. 学生姓名
  2. 课程名称
  3. 数值等级

对于额外的学分,将成绩列为字母而不是数字。

3 个相关的表格是:

注册 其中包含列

Section_ID / Student_ID / Grade(这是使用没有小数的 4 点 GPA 系统的数字)

学生 其中包含列

身份证/姓名/电子邮件

课程 其中包含列

ID/标题/描述/单位

我能想到的最好的是:

select name, Grade, Title 
from SELECT * FROM 
(
    student 
    join registration 
    on registration.Student_ID = student.ID
    join course on course.ID = registration.Section_ID
) as transcript group by student ;

这给了我 1064 语法错误,我不知道为什么。尝试仅使用 2 个有问题的表的嵌套选择语句有效,不知道为什么从三重连接中选择被拒绝。

至于额外的学分部分,除了在成绩列上运行更新表语句并将 1、2、3、4 设置为 D、C、B、A 之外,我不知道该怎么做。

【问题讨论】:

  • 您不需要子查询。只需从联接表中选择所需的列。对于额外的功劳,请使用Case 声明。我更喜欢SQL Server,但我认为MySql 可以做Case。这应该为您指明正确的方向。

标签: mysql sql mysql-workbench rdbms


【解决方案1】:

您的 select 语句存在一些语法问题。查询应如下所示。您需要正确使用 JOIN 来使用 Relational Key 列在两个表之间建立关系。

SELECT name, Grade, Title 
FROM Student A
INNER JOIN registration B B.Student_ID = A.ID
INNER JOIN Course C C.ID = B.Section_ID

要获得每个学生的结果,请在脚本末尾应用过滤器 -

WHERE A.ID = N --Put Student ID Here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2014-09-13
    相关资源
    最近更新 更多