2014-09-04 77 views
0

我有這4個表如何條件添加到複雜的select語句

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

2. courseRequirements 
------------------------ 
CourseID ReqID     

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

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

我的發言做如下因素

1 - 顯示從表過程中,課程名稱,其中course.CourseID = semestercourses.CourseID
2,不要顯示學生完成的課程「studentcoursecomplete」
3,不要顯示有學生要求的課程沒有完成 4,顯示有要求的學生完成的課程

SELECT c.*, sc.* FROM semestercourses AS sc 
NATURAL LEFT JOIN course AS c 
NATURAL LEFT JOIN courserequirements AS cr 
NATURAL LEFT JOIN studentcoursecomplete AS scc 
WHERE 
sc.CourseID NOT IN (SELECT CourseID FROM studentcoursecomplete) 
AND 
(cr.RequirementID IS NULL OR cr.RequirementID IN (SELECT CourseID FROM 
studentcoursecomplete)) 

聲明使其正確..
但我怎樣才能使之成爲一個spicific學生
例如studentcoursecomplete.StudentID = 1
!我怎樣才能做到這一點?

+0

你試過「like」還是等於SQL – 2014-09-04 16:25:13

+0

當我使用這個我得到一個錯誤的數據,說「沒有數據」..所以我必須把它放在正確的位置 – 2014-09-04 16:30:52

+0

couldnt你只是添加一個額外的條款您的where語句,如'AND scc.StudentID = 1' – ItalianStallion 2014-09-04 17:19:46

回答

0
SELECT 
courseid 
,coursenum 
,coursename 
FROM course 
WHERE 
courseid not in (SELECT courseid from studentcoursecomplete where studentid =1) 
and courseid in (SELECT courseid from courseRequirements where ReqID is not NULL) 
and courseid in (SELECT courseid from semester courses) 

希望這個工程,我明白你在找什麼。

+0

我們如何才能讓SQL提示用戶提供studentID並使用該值,我們可以使用studentID變量而不是指定硬編碼(1)值。可能是Gabriel想要的。 – 2014-09-04 20:38:00