2014-09-03 2 views
0

У меня есть два SQL заявлениякак я могу сделать это отборное заявление

первый

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 esult is

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/ понимание тех, ответит на ваш вопрос. –

+0

Итак, вы ищете все курсы, которые не входят в «завершенное» ведро? –

ответ

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

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; 

попробовать это :)

 Смежные вопросы

  • Нет связанных вопросов^_^