【发布时间】:2020-04-02 02:44:14
【问题描述】:
我正在尝试创建一个网站,根据学生成绩单中已完成的课程以及学位课程的剩余内容,向学生推荐他们下学期应该学习的课程。
我的第一个想法是查询课程中所有不在学生成绩单中的 Courses_Codes。我已经用下面的查询做到了。
SELECT Course_Code, Course_Sequence, Prereq_ID
FROM Curriculum
WHERE NOT EXISTS
(SELECT * FROM Transcript
WHERE curriculum.course_code = transcript.course_code
AND transcript.CWID = "C38475920");
但是,我需要进一步缩小查询范围,以免我向学生推荐具有学生不满足的课程先决条件的课程。课程表中的 Prereq_ID 包含每门课程的先决条件。我完全不知道如何在上面的查询中添加其他代码并获得返回所有课程的结果。不在特定学生成绩单中的 Course_Code (CWID 是学生的 ID。学生上过的每门课有相应的 CWID) 并且还可以通过添加类似这样的内容来确保满足先决条件?
transcript.Course_Code = curriculum.Prereq_ID
如果这没有意义,我知道这不是正确的 SQL,但是:
SELECT curriculum.Course_Code
FROM curriculum
WHERE curriculum.Course_Code IS NOT IN transcript
AND transcript.Course_Code = curriculum.Prereq_ID
AND transcript.CWID = "C38475920”;
这是课程表和成绩单:
protected $table ="curriculum";
protected $fillable = [
'Program_ID', //Primary Key //int
'Curriculum_ID', //varchar
'Maj_Code',//varchar
'Course_Code',//varchar
'Course_Seq', //int
'Prereq_ID',//varchar
'Course_Desc',//varchar
];
protected $table ="transcript";
protected $fillable = [
'Transcript_ID', //primary key
'CWID', //foreign key //varchar
'Maj_Code', //varchar
'Curriculum_ID', //varchar
'Course_Comp',//varchar
'Term_Completed',//varchar
'Course_Grade',//varchar
'Course_Code',//varchar
];
希望这会使我试图弄清楚的结果。任何帮助将不胜感激。
【问题讨论】:
-
我认为如果您edit 您的问题并发布架构详细信息(即表名、列名、列数据类型、主键和外键)会有所帮助。虽然这些细节您可能很清楚,但这并不意味着阅读您的问题的人知道这些细节。
-
你是对的,对此感到抱歉。