2014-09-04 72 views
-1

我有这4个表如何与复杂的条件

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

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

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

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

retrive从4个表中的数据我不知道如何下手,做sql语句
的语句必须做如下因素

1-显示课程名称课程路线课程名称课程ID =学期课程。课程ID
2 - 不显示学生完成“学生课程完成”的课程
3 - 不显示有学生要求的课程没做完

例如

这学期有3门课程(英语2,数学,体育)
约翰是一个学生
他完成数学课程(studentcoursecomplete)
英语2有一个要求“english 1”(courseRequirements),他没有完成english1(studentcoursecomplete)
所以他可以看到只是“数学”课程

什么是做这个选择语句!

+0

你可以从这里开始:http://www.w3schools.com/sql/sql_select.asp – 2014-09-04 09:11:27

+0

hhhhh基本选择语句^ _ ^我知道兄弟.. – 2014-09-04 09:21:31

+0

所以我们做你的功课? – Strawberry 2014-09-04 09:26:12

回答

0

只是一个猜测(根据你说什么),但我认为左连接可能会帮助你。这个问题是必须包括不与其它表中存在的行,基本格式是这样的:

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。因此,您可以测试NULL以查找右表中没有匹配的位置。

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

+0

它的工作正常^ _ ^但少一件事 如果有一个课程english2和学生完成english1 .. english 2必须是显示..怎么可以让它 – 2014-09-04 09:38:45

+0

我会认为应该工作,因为课程英语2应该有一个唯一的ID到课程英语1,所以英语1(已完成)将从studentcoursecomplete返回列,而英语2(未完成)将返回NULL。 – Giles 2014-09-04 10:16:25