我正在开发一个简单的课堂系统,其中教师管理班级和他们的科目。
我在我的教师表中有两个访问级别,由一个整数分配(1 =管理员,2=用户)...这意味着班主任是管理员:)
一个老师(1级)可以有很多个班级,一个班级可以有很多个老师(所以我有'TeachersClasses‘表)。一个班级可以有多个科目,一个教师可以有多个科目。
基本上,我正在尝试一个查询来显示管理教师的(1级)科目。但是,只有级别为2的教师才与管理员用户设置的科目直接相关。班主任可以通过教室查看他们的所有科目,但我不能让所有科目显示在一个页面上,相反,我现在只能让这些科目出现在特定的教室下……
这就是我到目前为止所得到的,它没有返回任何东西。(我猜这可能需要一个比'INNER JOIN‘更高级的SQL子句,这是我唯一熟悉的连接类型,我认为这就足够了!)
$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 :)
发布于 2010-04-08 21:12:42
这一行看起来像是一个bug:
INNER JOIN classroom ON subjects.subjectid = classroom.classid当你加入一个主题to和一个分类to时,你将不会得到任何记录。
发布于 2010-04-08 21:17:05
根据表的名称(使用DDL来显示表结构将使这一点更清楚),我猜测科目和教室之间的连接是无效的。你真的想把subjectid加入到教室id中吗?
此外,我不确定整个level1和level2是如何联系在一起的(同样,DDL可能会帮助读者理解),但您所说的高级内部连接可能是外部连接。如果你有一个你想要包含的老师,即使他们没有教师班级记录,你也可以做一个外连接:
classroom.classid = teacherclasses.classid上的...teacherclasses右外加入teacherclasses.teacherid =teachers.teacherid上的教师...
这将包括所有教师记录,即使他们的教师in没有出现在教师类表中。(老实说,我可以把它倒过来--你可能想做一个“左外部”--我永远记不清哪一个是哪一个,所以我尝试一种方法,如果我不喜欢结果,我会尝试另一个方向,看看这是否能改善事情)。
希望这能对你有所帮助!
https://stackoverflow.com/questions/2600008
复制相似问题