Conditionnelle dans la clause where MYSQL
J'ai une requête que si un indicateur appelé OrderBy est 1, alors c'est un événement de l'agenda et j'ai besoin de vérifier une plage entre deux champs. Alors que tous les autres types nous venons de vérifier pour la journée en cours de visualisation. Je recherche si les déclarations et a vu de nombreux posts où il a été suggéré cas être utilisé donc j'ai essayé de la mettre en application dans ma requête. Ma requête a besoin de la condition dans le where. Je sais que j'ai des problèmes de syntaxe, et c'est pourquoi je suis ici dans l'espoir que quelqu'un puisse indiquer la manière correcte de le faire.
Je vous remercie pour votre temps
Ma requête actuellement
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'
order BY activitytypes.orderby,
activities.starttime
OriginalL'auteur user2719164 | 2013-08-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire cela avec
AND
etOR
aussi longtemps que vous utilisez suffisamment de parenthèses.Aussi je suis en supposant que
activities.OrderBy
peut être null. Si ce n'est pas le cas, vous pouvez supprimer le nul de vérifier:Sinon, si vous voulez toujours utiliser
CASE
, vous avez juste besoin de fermer votreCASE
déclaration à l'aide deEND
, comme ceci:OriginalL'auteur Ike Walker