2015-06-17 4 views
0

Я хочу поставить условие case внутри where, то есть если semester column второй таблицы является нулевой, мне нужно отфильтровать столбцы, где semester is null. Если нет, мне нужно отфильтровать данные в другом условии.case statement внутри where clause server

// если семестр имеет нулевое значение, мне нужен запрос, чтобы быть похожими на это:

select * from tbl_courses tc 
    left join tbl_exams te on tc.courseID = te.courseID 
    where te.gradeID=10 and 
    te.semester is null 

// если семестр не равно нуля, запрос должен быть

select * from tbl_courses tc 
left join tbl_exams te on tc.courseID = te.courseID 
where te.gradeID=10 and 
te.semester is null 

Для это требование, как я могу написать один запрос из самого sql, как показано ниже:

select * from tbl_courses tc 
left join tbl_exams te on tc.courseID = te.courseID 
where te.gradeID=10 and 
(case when te.semester is null 
    then te.semester is null 
    else te.semester = tc.semester END) 

В любом случае это не right.Please помочь мне

+0

Можете ли вы указать, что вы хотите? Я не сразу понял. Но я уверен, что могу дать вам простой ответ. – Ionic

+0

@Ionic \t Если te.semester имеет значение null, мне нужно выбрать данные, где te.semester имеет значение null.Если он не является нулевым, мне нужно выбрать данные, где te.semester = tc.semester – Techy

ответ

2

Предполагая, что ваш второй оператор выбора должен быть:

select * from tbl_courses tc 
left join tbl_exams te on tc.courseID = te.courseID 
where te.gradeID=10 
and te.semester = tc.semester 

Попробуйте это:

select * 
from tbl_courses tc 
left join tbl_exams te on tc.courseID = te.courseID 
where te.gradeID=10 
and (
    te.semester = tc.semester 
    OR te.semester is null 
) 
+0

Если te.semester is null, мне нужно выбрать данные, где te.semester имеет значение null.Если это не null, мне нужно выбрать данные, где te.semester = tc.semester. @Zohar Peled – Techy

+0

Это именно то, что должен сделать мой запрос .... вы попробовали? –

+0

Ya, спасибо, хорошо – Techy