2009-10-12 10 views
0

Je ne sais pas si c'est possible, mais je voudrais sélectionner les enregistrements en fonction de la valeur du champ recur_type, où le 'm' est le jour de la semaine. Si c'est un événement hebdomadaire récurrent, je dois m'assurer que c'est un jour où il se répète, sinon, je veux revenir tous les jours. cependant, j'obtiens un jeu de résultats vide:Conditionnel SELECT MySQL

SELECT * 
FROM wp_fun_bec_events 
WHERE start_date <= '2009-10-12' 
AND (end_date >= '2009-10-12' 
    OR (recur_end > '0' AND recur_end >= '2009-10-12')) 
AND ('m' IN (
    CASE WHEN 'recur_type' = 'weekly' 
    THEN recur_days 
    ELSE 's/m/t/w/r/f/a' 
    END)) 
ORDER BY start_date, start_time 

Des idées?

Répondre

0

Cela peut être lié à votre clause IN. La seule façon qui fonctionnera jamais est si 'recur_days' est égal à 'm'. Il jamais travailler dans le 'else' depuis 'm' <> 's/m/t/w/r/f/a' (sauf si 'm' est le nom d'une colonne et que ces apostrophes sont en fait en arrière. Si oui, faites le moi savoir et je vais essayer à nouveau).

0

Hmm. Peut-être essayer:

SELECT * 
FROM wp_fun_bec_events 
WHERE start_date <= '2009-10-12' 
AND (end_date >= '2009-10-12' 
    OR (recur_end > '0' AND recur_end >= '2009-10-12')) 
AND ((
    CASE WHEN 'recur_type' = 'weekly' 
    THEN recur_days 
    ELSE 's/m/t/w/r/f/a' 
    END) LIKE '%m%') 
ORDER BY start_date, start_time 

Pas tout à fait sûr de la syntaxe MySQL, cependant.