gpt4 book ai didi

MYSQL 搜索返回错误和重复的值

转载 作者:行者123 更新时间:2023-11-29 09:59:59 24 4
gpt4 key购买 nike

我正在大学做一个项目,当我尝试搜索以收集一些结果时,我似乎遇到了一些问题。

我正在尝试显示提供 StudentName、ModuleName 和 DegreeID 的结果。当我这样做时,它似乎重复了值并返回了错误的结果。

例如 - Owen Barnes 只研究计算机科学,而不是哲学,但它只是返回所有值,而不是应返回的指定 3 个值。此外,康纳·博恩正在学习哲学,但这表明他正在学习每个模块,包括计算机科学的模块。

我希望有人能帮助我。我使用 2 个表(ModulesFormDegree 和 StudiesModules),用于将模块链接到学位(使用 2 个外键)和学生模块(也使用 2 个外键)。

我已将我的问题附在下面,如果需要更多数据,请告诉我。

Inquiry & Results Description of Tables

查询:

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

但是,根据 WHERE 子句中的条件连接表已经相当过时,并使用 ANSI 连接取代,如下所示:

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

关于MYSQL 搜索返回错误和重复的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53209990/

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