Where case between […]

Where case between […] - SQL/NoSQL - Programmation

Marsh Posté le 23-06-2010 à 17:13:12    

:hello:

 

J'aurais besoin d'un petit coup de main pour ma requête SQL, il faudrait que les résultats dépendent de la valeur d'un champ (donc CASE), mais suivant cette condition :

 

si date_fin vaut 0, alors je veux les champs pour lesquels DATETIME < date_debut
si date_fin > 0, alors DATETIME BETWEEN date_debut AND date_fin

 

Du coup un truc comme ça n'est pas possible ?

 
Code :
  1. SELECT * FROM `table` WHERE `date_fin` BETWEEN CASE WHEN `date_fin` = '0' THEN (…) WHEN `date_fin` > 0 THEN (…)
 

:jap:


Message édité par Tyrant le 24-06-2010 à 15:32:57
Reply

Marsh Posté le 23-06-2010 à 17:13:12   

Reply

Marsh Posté le 24-06-2010 à 09:32:50    

Tu pourrais le faire avec un Where (date_fin = 0 and DATETIME < date_debut) or (date_fin > 0 and DATETIME between date_Debut and date_fin).

Reply

Marsh Posté le 24-06-2010 à 15:32:21    

:sweat:  
 
Je crois que j'ai bloqué sur les CASE, du coup j'étais arrivé à ça (qui fait la même chose) :
 

Code :
  1. SELECT * FROM table WHERE (UNIX_TIMESTAMP() < CASE WHEN date_fin = "0" THEN date_debut END OR (UNIX_TIMESTAMP() > CASE WHEN date_fin > "0" THEN date_debut END AND UNIX_TIMESTAMP() < CASE WHEN date_fin > "0" THEN date_fin END))


 
(avec le timestamp au lieu du datetime aussi).
 
Sur une autre planète donc :|
 
Mais j'avoue que j'ai complètement zappé que c'était faisable avec des WHERE, au final je vois plus trop dans quels cas les CASE sont indispensables mais bon.
 
Merci en tout cas :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed