返回错误和重复值的MYSQL搜索
我在大学里做一个项目,当我试图搜索并收集一些结果时,我似乎遇到了一些问题 我试图显示给出StudentName、ModuleName和DegreeID的结果。当我这样做时,它似乎在复制值并返回错误的结果 例如,欧文·巴恩斯只是学习计算机科学,而不是哲学,但它只是返回所有的值,而不是它应该返回的指定值。此外,康纳·伯恩正在学习哲学,但这表明他正在学习包括计算机科学在内的每个模块 我希望有人能帮我。我使用了两个表(ModulesFormDegree和StudiesModules),它们用于将模块链接到学位(使用2个外键)和学生与模块(也使用2个外键) 我在下面附上了我的问题,如果需要更多的数据,请让我知道 查询:返回错误和重复值的MYSQL搜索,mysql,Mysql,我在大学里做一个项目,当我试图搜索并收集一些结果时,我似乎遇到了一些问题 我试图显示给出StudentName、ModuleName和DegreeID的结果。当我这样做时,它似乎在复制值并返回错误的结果 例如,欧文·巴恩斯只是学习计算机科学,而不是哲学,但它只是返回所有的值,而不是它应该返回的指定值。此外,康纳·伯恩正在学习哲学,但这表明他正在学习包括计算机科学在内的每个模块 我希望有人能帮我。我使用了两个表(ModulesFormDegree和StudiesModules),它们用于将模块链接
select StudentName, ModuleName, DegreeID
from Student, Modules, Degree, StudiesModules, ModulesFormDegree
where Student.StudentID=StudiesModules.StudentID and
Modules.ModuleID=ModulesFormDegree.ModID and
Degree.DegreeID=ModulesFormDegree.DegID
很难说清楚,因为您尚未发布所有的表定义,但您的查询在where子句中缺少导致笛卡尔乘积的条件,可以按如下方式修复:
select StudentName,
ModuleName,
DegreeID
from Student,
Modules,
Degree,
StudiesModules,
ModulesFormDegree
where Student.StudentID=StudiesModules.StudentID and
Modules.ModuleID=ModulesFormDegree.ModID and
Degree.DegreeID=ModulesFormDegree.DegID and
StudiesModules.ModuleID = ModulesFormDegree.ModID
SELECT StudentName,
ModuleName,
DegreeID
FROM StudiesModules sm
JOIN ModulesFormDegree md
ON sm.ModuleID = md.ModID
JOIN Degree d
On d.DegreeID = md.DegID
JOIN Modules m
ON m.ModuleID = md.ModID
JOIN Student s
ON s.StudentID = sm.StudentID
但是,WHERE子句中条件上的联接表相当陈旧,并使用ANSI联接取代,如下所示:
select StudentName,
ModuleName,
DegreeID
from Student,
Modules,
Degree,
StudiesModules,
ModulesFormDegree
where Student.StudentID=StudiesModules.StudentID and
Modules.ModuleID=ModulesFormDegree.ModID and
Degree.DegreeID=ModulesFormDegree.DegID and
StudiesModules.ModuleID = ModulesFormDegree.ModID
SELECT StudentName,
ModuleName,
DegreeID
FROM StudiesModules sm
JOIN ModulesFormDegree md
ON sm.ModuleID = md.ModID
JOIN Degree d
On d.DegreeID = md.DegID
JOIN Modules m
ON m.ModuleID = md.ModID
JOIN Student s
ON s.StudentID = sm.StudentID
您编写的查询是什么?请编辑您的问题并添加您的查询。抱歉,它似乎复制了我的图像。我现在将进行编辑以显示。您是否可以将查询添加为文本而不是图像?我怀疑您的问题可以通过使用ANSI join SYNTASHI@philcode101解决,请将您的查询添加为文本而不是图像,以便于其他人帮助您。您好,正如您所写,我的查询中有where子句!值得注意的是,在我的项目中,由于某种原因,我只能使用where查询。我添加了最后一个条件。你上面的查询有三个条件,我的有四个哦,我明白了!很抱歉我的困惑,我对sql非常陌生(你可能知道!)我会在回家后重新尝试这个查询,并让你知道结果!