很抱歉,如果这篇文章的标题有点令人困惑。我的问题很简单,我知道解决方案与联接有关,但我无法弄清楚相关的帖子。
我在MySQL中整理课程安排,课程有先决条件。为了做到这一点,我有1个表,其中包含所有可用的类(ClassName),当然还有一个主ID(Class_ID)。然后,我在本学期提供了另一个课程表,使用“可用类”表中的信息构建。此表以类的先决条件的唯一ID(ClassSemester_ID),Class_ID和Prerec_ID开头。 Prerec_ID实际上是另一个类的Class_ID。
这意味着在实际计划中,我需要ClassName列以匹配Class_ID和Prerec_ID。更直观:
表1:AllClasses Col1:Class_ID Col2:ClassName
表2:SemesterClasses Col1:ClassSemester_ID Col2:Class_ID Col3:Prerec_ID
如何构造一个查询,同时输出显示其关联ClassName的Class_ID和Prerec_ID?
先谢谢你们!
-CB
答案 0 :(得分:2)
我相信它会更有效率
select SemesterClasses.Class_ID, AllClasses.ClassName, PreRequisite.ClassName as PreRequisiteName
from SemesterClasses
left join AllClasses on AllClasses.Class_ID = SemesterClasses.Class_ID
left join AllClasses as PreRequisite on PreRequisite.Class_ID = SemesterClasses.Prerec_ID
应返回具有类id,名称和先决条件名称的所有SemesterClasses行。 也可以在年份的学期班中添加列,并将过滤器应用于where。
希望有所帮助
答案 1 :(得分:0)
您想要类及其先决条件类的类名吗?
select Classes.Class_ID, Classes.ClassName, Sem.Prerec_ID, Prereq.ClassName from
AllClasses as Classes inner join
SemesterClasses as Sem on Classes.Class_ID = Sem.Class_ID inner join
AllClasses as Prereq on Prereq.Class_ID = Sem.Prerec_ID
答案 2 :(得分:0)
通常你会使用带别名的同一个表 - 类似这样的东西;
select a.className, b.className
from Classes a, Classes b, mytable
where prereq_id = a.class_id
and sem.class_id = b.class_id