2014-09-03 63 views
0

我有两个SQL语句我怎样才能使这个select语句

第一个

SELECT 
    course.CourseNum, 
    course.CourseName, 
    course.CreditHours 
FROM course 
WHERE course.TypeID=1 

结果是

Course Num------Course Name---------Credit Hours          
1101----------Arabic Language----------3    
1103----------English LanguageI--------3    
1104----------English LanguageII-------3    
1106----------Hebrew LanguageI---------3    
1125----------Scientific Research------3    

第二个是只显示有

等级结果
SELECT 
    course.CourseNum, 
    course.CourseName, 
    course.CreditHours, 
    studentcoursecomplete.CourseGrade 
FROM course, studentcoursecomplete 
WHERE studentcoursecomplete.SID=1 
    And studentcoursecomplete.CourseID = course.CourseID 
    AND course.TypeID=1 

r结果是

Course Num---------Course Name----------Credit Hours-----Grade    
1101---------------Arabic Language-----------3------------60  
1103---------------English LanguageI---------3------------65   
1104---------------English LanguageII--------3------------70 

所以现在我需要一个SQL语句,显示第一个记录,除了第二个记录! sql语句必须显示此结果。

Course Num------Course Name---------Credit Hours     
1106----------Hebrew LanguageI---------3          
1125----------Scientific Research------3      
+1

您应该了解有关连接:http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/了解那些会回答您的问题。 – 2014-09-03 17:06:59

+0

因此,您正在寻找所有不在“已完成”桶中的课程? – 2014-09-03 17:22:17

回答

0

你可以做一个左连接,查找NULL。尽可能使用表别名,以使代码更具可读性。

select 
    c.CourseNum, 
    c.CourseName, 
    c.CreditHours 
from course c 
left join studentcoursecomplete cc 
    on cc.CourseID = c.CourseID 
    and cc.SID = 1 
where c.TypeID=1 
    and cc.CourseID is null 
+0

你提到了LEFT-JOIN,但是把你的样本留作JOIN。 – DRapp 2014-09-03 17:26:36

0

试试这个代码。它应该给你想要的结果。

SELECT course.CourseNum, course.CourseName, course.CreditHours 
FROM course course left join 
studentcoursecomplete studentcoursecomplete on 
studentcoursecomplete.CourseID = course.CourseID and studentcoursecomplete.SID=1 
where studentcoursecomplete.CourseID is null 
and course.TypeID=1; 
0
SELECT course.CourseNum, course.CourseName, course.CreditHours 
FROM course 
WHERE course.TypeID=1 
MINUS 
SELECT course.CourseNum, course.CourseName,course.CreditHours,studentcoursecomplete.CourseGrade 
FROM course,studentcoursecomplete 
WHERE studentcoursecomplete.SID=1 And studentcoursecomplete.CourseID = course.CourseID AND course.TypeID=1; 

试试这个:)