2009-10-12 2 views
0

Не знаю, возможно ли это, но я бы хотел выбрать записи на основе значения поля recur_type, где «m» - день недели. Если это еженедельное повторяющееся событие, мне нужно убедиться, что это день, когда он повторяется, в противном случае я хочу вернуть все дни. однако я получаю пустой набор результатов:Условный 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 

Любые идеи?

ответ

0

Возможно, это связано с вашим предложением IN. Единственный способ, который когда-либо будет работать, - это если «recur_days» равно «m». Он будет никогда Работает в 'else', так как 'm' <> 's/m/t/w/r/f/a' (если только 'm' не является именем столбца, и эти апострофы фактически являются обратными. Если да, дайте мне знать, и я попробую еще раз).

0

Хм. Возможно, попробуйте:

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 

Не совсем уверен в синтаксисе MySQL.

Смежные вопросы