如何从具有复杂条件的4个表中检索数据

时间:2014-09-04 08:58:29

标签: mysql sql

我有这4张桌子

1. course 
------------------------ 
CourseID   CourseNum    CourseName             

2. courseRequirements
------------------------
CourseNum  ReqNum                

3. semestercourses
------------------------
CourseID                

4. studentcoursecomplete
-----------------------
CourseID   StudentID               

我不知道如何启动并执行sql语句
声明必须遵循以下

1 - 显示课程名称,其中包括课程课程。课程ID = semestercourses.CourseID
2 - 不要显示学生完成“studentcoursecomplete”的课程 3 - 不要显示要求学生没有完成的课程

示例

本学期有3门课程(英语2,数学,运动)
约翰是学生 他完成了数学课程(studentcoursecomplete)
英语2有一个要求“英语1”(课程要求),他没有完成英语1(studentcoursecomplete)
所以他只能看到“数学”课程

执行此操作的select语句是什么!!!!

1 个答案:

答案 0 :(得分:0)

只是一个猜测(基于你说的),但我认为LEFT JOINS可以帮助你。问题是必须包含其他表中不存在的行,基本格式如下:

SELECT course.* 
FROM course
LEFT JOIN studentcoursecomplete ON studentcoursecomplete.CourseID = course.CourseID
LEFT JOIN courseRequirements ON courseRequirements.CourseNum = course.CourseNum
WHERE courseRequirements.CourseNum IS NULL 
AND studentcoursecomplete.CourseID IS NULL

左连接将为左表中的所有行提供右表中的所有匹配行,右表中的列为NULL,其中没有匹配项。因此,您可以测试NULL以查找右表中没有匹配的位置。

这不一定是完整的解决方案,但希望能给你一些想法。