gpt4 book ai didi

mysql - 如何使用联接在 MySQL 中的三个表中运行查询?

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:27 24 4
gpt4 key购买 nike

我在 Stackoverflow 上研究了很多涵盖此类问题的问题,但我找不到我寻求的解决方案。

这是我的表格:

STUDENT
studentID lastName firstName
08422567 Brown Susan
10356844 Black Roger
10659475 White Steven
09463729 Grey Naomi


MODULE
moduleID moduleName
CE1181 Biometrics
CE1183 Intelligent Systems
CE1133 Databases
CE1186 HCI

GRADES
studentID* moduleID* grade
10356844 CE1181 A
10356844 CE1183 B
10356844 CE1133 C
10356844 CE1186 A
08422567 CE1181 B
08422567 CE1183 B
08422567 CE1133 B
08422567 CE1186 B
10659475 CE1181 C
10659475 CE1183 C
10659475 CE1133 A
10659475 CE1186 C
09463729 CE1181 A
09463729 CE1183 B
09463729 CE1133 B
09463729 CE1186 B

我需要运行的查询是:

Select all from students whose id begins with 10 and their grade for intelligent systems was a B

现在,我知道我需要将表连接在一起,我已经构建了我的表,以便成绩表包含连接到学生表和模块表的外键。

作为初学者,这种类型的查询很难解决,我希望我接近答案,这就是我所拥有的:

SELECT * FROM student WHERE studentID LIKE '10%' INNER JOIN grades
ON student.studentID=grades.studentID INNER JOIN module
ON grades.moduleID =module.moduleID

当然这行不通,但我走的路对吗?将此问题的正确解决方案保存在代码工具箱中以供日后使用是一件好事!

最佳答案

差不多了,但是 WHERE 需要在 JOIN 子句之后。我使用别名来简化语法。

SELECT s.* 
FROM grades g
JOIN module m
ON m.moduleid = g.moduleid
JOIN student s
ON s.studentid = g.studentid
WHERE g.studentid LIKE '10%'
AND g.grade = 'B'
AND m.modulename = 'Intelligent Systems'

结果

| STUDENTID | LASTNAME | FIRSTNAME |------------------------------------|  10356844 |    Black |     Roger |

See the demo

关于mysql - 如何使用联接在 MySQL 中的三个表中运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15329414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com