2009-10-12 4 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'과 같은 경우에만 작동합니다. > 'm'이 열의 이름이고 그 아포스트로피가 실제로 백틱 인 경우를 제외하고는 '<>'s/m/t/w/r/f/a 이후 'else'에서이 절대 작동하지 않습니다. 그렇다면 알려 주시면 다시 시도하겠습니다).

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 구문에 대해서는 확실하지 않습니다.