我通常阅读其他主题,这是我在这里的第一个问题。开始;
我正在尝试构建一个涉及两个表的查询,类(class)表和 studentsLink 表。 StudentsLink 表描述了学生和类(class)之间的链接。表格如下;
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
我基本上是在尝试获得所有可用类(class)的结果集,哪个是特定学生注册的,哪个不是他,所以我可以将其显示为我们可以提供的类(class)学生。
我尝试了此查询的多种变体并进行了一些研究。我并不是要 teh codez,但一点指导会很棒。在尝试同时处理项目的其他部分时,我已经坚持了几天。
非常感谢任何帮助。提前致谢。
最佳答案
SELECT ID, CourseName, CourseInstructor, StudentId, CourseId
FROM Courses as c
LEFT JOIN StudentLink as sl ON c.id = sl.CourseId And StudentId = 103
关于Mysql帮助-左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5623581/