我在下面的图标中有数据库。我想要
例如,我试过
(英文本:)
SELECT COUNT(student_name) AS NumberOfStudents FROM student_srms JOIN class_srms JOIN subject_srms WHERE class_srms.class_name='Class5' AND subject_srms.subject_name='Psychology'
但是返回NumberOfStudents = 20,但是20都是学生条目。
发布于 2022-04-06 14:25:35
这个问题很可能源于你的FROM
条款。仅仅说JOIN
是不够的。您需要指定用ON
子句连接的两个表之间的列的关系:
FROM student_srms
JOIN class_srms
ON student_srms.student_id = class_srms.student_id
JOIN subject_srms
ON class_srms.subject_id = subject_srms.subject_id
我相信在MySQL
中有一个NATURAL JOIN
,它将告诉没有ON
子句的mysql
只是连接两个表之间类似的列名,但我觉得这很脏,如果在共享名称的表中引入新列,而不是引入关系,则可能会在以后的应用程序生命周期中导致失败,所以我只想避开这一点。
根据您在注释中报告的错误,我怀疑显示表/列的图表是不正确的。相反,尝试一下(我现在完全是瞎猜的):
FROM student_srms
JOIN student_class
On student_srms.student_id = student_class.class_id
JOIN class_srms
ON student_class.class_id = class_srms.student_id
JOIN subject_srms
ON class_srms.subject_id = subject_srms.subject_id
这会在student_class
关系表中添加,这样就可以从学生跳到类表。祈祷吧。
https://stackoverflow.com/questions/71768450
复制相似问题