Я обычно читаю другие темы, и это мой первый вопрос здесь.Вот оно;
Я пытаюсь создать запрос, который включает две таблицы: таблицу курсов и таблицу StudentsLink.Таблица StudentsLink описывает связь между студентами и курсом.Таблицы приведены ниже:
Course
courseID(bigint) - PK
courseName (varchar)
courseInstructor (varchar)
StudentsLink
courseID(bigint) - PK
StudentID(bigint) - PK
Below is some sample data;
course table
ID | courseName| courseInstructor
----------------------------------
1 | Algebra 1 | Mike
2 | English 2 | James
3 | English 3 | John
4 | Algebra 2 | Mike
5 | History 1 | Tony
Studentlink table
studentID | courseID
----------------------
100 | 2
101 | 3
102 | 3
102 | 4
103 | 4
100 | 1
103 | 3
103 | 2
Желаемый результат такой же, как приведенный ниже, если я искал ученика номер 103
ID | courseName| courseInstructor |StudentID | CourseID
---------------------------------------------------------
1 | Algebra 1 | Mike | NULL | NULL
2 | English 2 | James | 103 | 2
3 | English 3 | John | 103 | 3
4 | Algebra 2 | Mike | 103 | 4
5 | History 1 | Tony | NULL | NULL
Запрос, который у меня пока есть, следующий:
SELECT *
FROM course
LEFT JOIN studentLink
ON course.courseID = studentLink.courseID
WHERE studentLink.studentID = 103 OR (studentLink .studentID IS NULL AND studentLink.courseID IS NULL)
ORDER BY studentLink.courseID DESC
Я в основном пытаюсь получить набор результатов из всех доступных курсов, какой из них является конкретным студентом, а какой нет, поэтому я смогу отобразить его каккурс, который мы можем предложить студенту.
Я перепробовал много вариантов этого запроса и провел некоторое исследование.Я не совсем прошу кодез, но немного рекомендаций было бы замечательно.Я застрял в этом несколько дней, пытаясь одновременно работать над другими частями проекта.
Любая помощь очень ценится.Заранее спасибо.