首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询使用来自4个表的信息(并非全部直接链接)

SQL查询使用来自4个表的信息(并非全部直接链接)
EN

Stack Overflow用户
提问于 2010-04-08 21:07:44
回答 2查看 199关注 0票数 0

我正在开发一个简单的课堂系统,其中教师管理班级和他们的科目。

我在我的教师表中有两个访问级别,由一个整数分配(1 =管理员,2=用户)...这意味着班主任是管理员:)

一个老师(1级)可以有很多个班级,一个班级可以有很多个老师(所以我有'TeachersClasses‘表)。一个班级可以有多个科目,一个教师可以有多个科目。

基本上,我正在尝试一个查询来显示管理教师的(1级)科目。但是,只有级别为2的教师才与管理员用户设置的科目直接相关。班主任可以通过教室查看他们的所有科目,但我不能让所有科目显示在一个页面上,相反,我现在只能让这些科目出现在特定的教室下……

这就是我到目前为止所得到的,它没有返回任何东西。(我猜这可能需要一个比'INNER JOIN‘更高级的SQL子句,这是我唯一熟悉的连接类型,我认为这就足够了!)

代码语言:javascript
复制
  $query = "SELECT subjects.subjectid, subjects.subjectname, 
subjects.subjectdetails, classroom.classid, classroom.classname 
FROM subjects INNER JOIN classroom ON subjects.subjectid = classroom.classid 
INNER JOIN teacherclasses ON classroom.classid = teacherclasses.classid 
INNER JOIN teachers ON teacherclasses.teacherid = teachers.teacherid 
WHERE teachers.teacherid = '".intval( $_SESSION['SESS_TEACHERID'] )."'"; 

为了显示与班主任类相关的所有科目,我收集了我所有的表都需要在这里调用?谢谢你的帮助!

输出示例:

科目名称:数学//老师:史密斯先生//教室: DG99

与班主任教室相关的所有科目的x10 :)

EN

回答 2

Stack Overflow用户

发布于 2010-04-08 21:12:42

这一行看起来像是一个bug:

代码语言:javascript
复制
INNER JOIN classroom ON subjects.subjectid = classroom.classid

当你加入一个主题to和一个分类to时,你将不会得到任何记录。

票数 0
EN

Stack Overflow用户

发布于 2010-04-08 21:17:05

根据表的名称(使用DDL来显示表结构将使这一点更清楚),我猜测科目和教室之间的连接是无效的。你真的想把subjectid加入到教室id中吗?

此外,我不确定整个level1和level2是如何联系在一起的(同样,DDL可能会帮助读者理解),但您所说的高级内部连接可能是外部连接。如果你有一个你想要包含的老师,即使他们没有教师班级记录,你也可以做一个外连接:

classroom.classid = teacherclasses.classid上的...teacherclasses右外加入teacherclasses.teacherid =teachers.teacherid上的教师...

这将包括所有教师记录,即使他们的教师in没有出现在教师类表中。(老实说,我可以把它倒过来--你可能想做一个“左外部”--我永远记不清哪一个是哪一个,所以我尝试一种方法,如果我不喜欢结果,我会尝试另一个方向,看看这是否能改善事情)。

希望这能对你有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2600008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档