Я пытаюсь создать веб-сайт, который дает рекомендации студенту о том, какие уроки они должны пройти в следующем семестре, исходя из того, какие уроки были завершены в стенограмме студента и что осталось взять в учебной программе их степени.
Моя первая идея состояла в том, чтобы запросить все 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 в таблице учебных программ содержит предварительные условия для каждого курса. Я полностью застрял в том, как добавить дополнительный код в запрос выше и получить результат, который возвращает все curriculum.Course_Code, которые не находятся в заданной c расшифровке студента (CWID - это идентификатор студента. Каждый класс у студента есть соответствующий 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
];
Надеюсь, это поможет мне понять результат. Любая помощь будет принята с благодарностью.