连接两个MYSQL表
已解决:我忘记选择某个值,因此查询只返回找到的第一个等级连接两个MYSQL表,mysql,sql,database,Mysql,Sql,Database,已解决:我忘记选择某个值,因此查询只返回找到的第一个等级 我有两张桌子,我想把一张桌子的一部分和另一张桌子的一部分结合起来 第一个表Grades有 课程号,章节号,甲级,乙级丙级 第二个表,节,有 课程编号,章节编号,讲师 我想输出结果以便查看 课程号|组别号|讲师| A级| B级| C级 我尝试过使用JOIN,我得到了正确的课程和章节号以及正确的讲师。但是,成绩与第一个表中的课程和学段号不匹配 这是让我得到错误分数的查询 SELECT Grades.COURSE_NUMBER, Grades
我有两张桌子,我想把一张桌子的一部分和另一张桌子的一部分结合起来 第一个表Grades有
课程号
,章节号
,甲级
,乙级
丙级
第二个表,节,有课程编号
,章节编号
,讲师
我想输出结果以便查看课程号|组别号|讲师| A级| B级| C级 我尝试过使用JOIN,我得到了正确的课程和章节号以及正确的讲师。但是,成绩与第一个表中的课程和学段号不匹配 这是让我得到错误分数的查询
SELECT Grades.COURSE_NUMBER, Grades.SECTION_NUMBER, Sections.INSTRUCTOR,
Grades.A, Grades.B, Grades.C
FROM `Grades` INNER JOIN `Sections` on Grades.COURSE_NUMBER = Sections.COURSE
and Grades.SECTION_NUMBER = Sections.SECTION
我对数据库没有太多的经验,所以任何关于简化这个问题的建议都非常感谢
多谢各位
编辑:
等级表的样本数据:
| Course_number | Section_number | A | B | C |
| 101 | 001 | 4 | 1 | 0 |
| 101 | 002 | 5 | 2 | 8 |
| 102 | 001 | 7 | 9 | 4 |
截面表的示例数据:
| Course_number | Section_number | Instructor |
| 101 | 001 | Alex |
| 101 | 002 | Jeff |
| 102 | 001 | Greg |
预期结果:
| COURSE NUMBER | SECTION NUMBER | INSTRUCTOR | GRADE A | GRADE B | GRADE C |
| 101 | 001 | Alex | 4 | 1 | 0 |
| 101 | 002 | Jeff | 5 | 2 | 8 |
| 102 | 001 | Greg | 7 | 9 | 4 |
非工作结果:
| COURSE NUMBER | SECTION NUMBER | INSTRUCTOR | GRADE A | GRADE B | GRADE C |
| 101 | 001 | Alex | 25 | 9 | 2 |
| 101 | 002 | Jeff | 0 | 34 | 6 |
| 102 | 001 | Greg | 2 | 3 | 12 |
(成绩只是从成绩表中的某个地方随机抽取的,非常大)请试试这个
SELECT Grades.COURSE_NUMBER,
Grades.SECTION_NUMBER,Sections.INSTRUCTOR,Grades.A,
Grades.B, Grades.C
FROM Grades,Sections
WHERE Grades.COURSE_NUMBER = Sections.COURSE
AND Grades.SECTION_NUMBER = Sections.SECTION
您的查询在概念上似乎是正确的,但您使用的列名与表结构中描述的列名之间存在差异 试着这样改变它
SELECT t1.COURSE_NUMBER,
t1.SECTION_NUMBER,
t2.INSTRUCTOR,
t1.GRADE_A, t1.GRADE_B, t1.GRADE_C
FROM Grades t1
INNER JOIN
Sections t2
ON t1.COURSE_NUMBER = t2.COURSE_NUMBER AND
t1.SECTION_NUMBER = t2.SECTION_NUMBER
我在表格中添加了别名以使其更加紧凑,但如果您愿意,显然可以随意切换回完整的表格名称。添加示例表格数据、当前结果和预期结果-所有这些都是格式良好的文本。我已在问题中添加了示例数据。第二个表Section只有这三列您的列名不匹配。。。示例数据和查询之间不一致。您的查询生成的结果正是您想要的结果!这正是OP编写的查询,但是使用了30年前的样式联接。谢谢,但是这会产生与原始查询相同的结果。这正是OP编写的查询,但是使用了30年前的样式联接。谢谢,但是这会产生与原始查询相同的结果表结构是什么?我已经在原始帖子中添加了示例表谢谢,这是正确的。我忘了选择某个值,所以它只是返回它找到的第一个等级。非常感谢。
SELECT t1.COURSE_NUMBER,
t1.SECTION_NUMBER,
t2.INSTRUCTOR,
t1.GRADE_A, t1.GRADE_B, t1.GRADE_C
FROM Grades t1
INNER JOIN
Sections t2
ON t1.COURSE_NUMBER = t2.COURSE_NUMBER AND
t1.SECTION_NUMBER = t2.SECTION_NUMBER