我在大学做一个项目,当我试图搜索收集一些结果时,我似乎遇到了一些问题。
我试图显示结果,其中给出studentname、modulename和degreeid。当我这样做的时候,它似乎在复制值并返回错误的结果。
例如,欧文·巴恩斯只学习计算机科学,而不是哲学,但它只是简单地返回所有的价值观,而不是它应该返回的特定的3。此外,康纳·伯恩正在学习哲学,但这表明他正在学习包括计算机科学在内的每一个模块。
我希望有人能帮我。我使用了两个表(modulesformdegree&studiesmodules),用于将模块链接到degree(使用2个外键)以及将模块链接到studiesmodules(也使用2个外键)。
我把我的问题附在下面,如果需要更多的数据请告诉我。
查询结果表说明
查询:
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
1条答案
按热度按时间wyyhbhjk1#
很难说清楚,因为您还没有发布所有的表定义,但是您的查询在where子句中缺少一个条件,该条件导致笛卡尔积,可以按如下方式修复:
但是,where子句中关于条件的联接表已经相当过时,并使用ansi联接被取代,如下所示: