आप इसे AND
. के साथ कर सकते हैं और OR
जब तक आप पर्याप्त कोष्ठक का उपयोग करते हैं।
साथ ही मैं यह मान रहा हूं कि activities.OrderBy
शून्य हो सकता है। यदि ऐसा नहीं है तो आप शून्य जांच को हटा सकते हैं:
SELECT activities.*,
activitytypes.orderby
FROM activities
LEFT OUTER JOIN activitytypes
ON activities.typeid = activitytypes.typeid
WHERE activities.userid = 86
AND activities.typeid NOT IN ( 5, 10, 11, 12, 19 )
AND ( ( activities.orderby = 1
AND activities.starttime >= '2013-08-26 04:00:00'
AND activities.endtime <= '2013-08-27 04:00:00' )
OR ( ( activities.orderby IS NULL
OR activities.orderby != 1 )
AND activities.activitydate = '2013-08-26' ) )
ORDER BY activitytypes.orderby,
activities.starttime
वैकल्पिक रूप से, यदि आप अभी भी CASE
. का उपयोग करना चाहते हैं , आपको बस अपना CASE
. बंद करना होगा END
का उपयोग कर कथन , इस तरह:
SELECT activities.*,
activitytypes.orderby
FROM activities
LEFT OUTER JOIN activitytypes
ON activities.typeid = activitytypes.typeid
WHERE activities.userid = 86
AND activities.typeid NOT IN ( 5, 10, 11, 12, 19 )
AND (
CASE
WHEN activities.orderby = 1 THEN
activities.starttime >= '2013-08-26 04:00:00' AND activities.endtime <= '2013-08-27 04:00:00'
ELSE
activities.activitydate = '2013-08-26'
END
)
ORDER BY activitytypes.orderby,
activities.starttime