2014-09-04 47 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