我有一张桌子,里面有我称之为“课程”(法语)的课程,里面有几个课程,我已经将它们与学生联系起来,他们之间有一张桌子,看看他们是否去上课。
我想用 SELECT 和未选择的数据返回数据。
所以,如果一个学生学习了 5 门 3 门课程,我想退回他遵循的 3 门课程和他没有遵循的 2 门课程。
有没有办法做到这一点?
这将根据您的 RBDMS 而有所不同,但类似于以下内容应该可以工作:
SELECT
s.Name,
l.Name,
CASE WHEN sl.StudentID IS NULL
THEN 'Not Follows'
ELSE 'Follows'
END AS Status
FROM
Student s
CROSS JOIN Lessons l
LEFT JOIN Student_Lessons sl
ON s.ID = sl.StudentID
AND l.ID = sl.LessonID
这是一个outer join
. 如果您确定了您的数据库引擎(可能具有特定的外连接语法)和您的模式,那么您可以获得一些有关实际 SQL 的帮助。