1

对不起,如果这篇文章的标题有点混乱。我的问题很简单,我知道解决方案与加入有关,但我无法准确找出相关的帖子。

我在 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

如何构造一个查询,该查询将同时输出 Class_ID 和 Prerec_ID 并显示其关联的 ClassName?

提前谢谢各位!

-CB

4

3 回答 3

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

应返回所有 SemesterClasses 行以及类 id、名称和先决条件名称。还可以在当年的学期课程中添加列,并在哪里应用过滤器。

希望能帮助到你

于 2012-06-03T13:18:42.447 回答
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
于 2012-06-03T13:25:05.013 回答
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
于 2012-06-03T13:06:15.973 回答