问题:对于所有300个级别的课程(300-399),列出课程编号,必修课程编号和必修课程说明。
对不起,如果这很难理解,我甚至不知道如何表达我的问题。基本上,我正在试图找出这个问题,而且在列出前提条件描述时我完全不知道从哪里开始。
我只需要显示与主菜相关的先决条件描述。
以下是我到目前为止所做的,绝对不完整。该链接是“课程”表的src="{% static 'user.userprofile.picture.url' %}"
查询输出的示例。
只是为了澄清:每个SELECT *
都列出了先决条件。但是,先决条件也是课程表中列出的Course_NO
。
感谢您提前提供任何帮助,我很感激!
Course_NO
答案 0 :(得分:0)
我要做的是使用表别名C1作为原始查询。然后,我将使用表别名C2子查询先决条件课程编号的课程描述。注意我使用表别名-C1和C2-将C2.Course_No号与C1.PREREQUISITE号相关联。从该子查询中选择C2.DESCRIPTION。子查询被赋予列别名[前提条件课程描述];请注意,如果没有列别名,该字段将具有空白标题。
你应该使用递归吗?在这种情况下,除非特别告知您这样做,否则您可能不应该尝试这样的解决方案。
SELECT C1.Course_No
,C1.PREREQUISITE,
,(SELECT C2.DESCRIPTION
FROM COURSE AS C2
WHERE C2.Course_No = C1.PREREQUISITE
) AS [Prerequisite Course Description]
FROM COURSE AS C1
WHERE C1.Course_NO < 400
C1.AND Course_NO >= 300
答案 1 :(得分:0)
这可以self join完成。
SELECT
MainCourse.Course_No,
PreRequisiteCourse.Description as PreRequisiteDescription
FROM COURSE as MainCourse
Inner Join Course as PreRequisiteCourse
on MainCourse.Prerequisite = PreRequisiteCourse.Course_No
WHERE
MainCourse.Course_NO Between 300 And 399
如果您的某些课程没有要包含在结果中的先决条件,则应将Inner join
更改为Left Outer Join
。