2014-02-14 4 views
0

이것은 MySQL이며 if 문에 대해 불평합니다.mySQL IF 문 구문

SELECT c.id AS id, (p.validFor * 30) AS validFor, p.validFrom as validFrom, 
date(FROM_UNIXTIME(rr.timemodified)) as date, 
(CASE 
    WHEN date(validFrom) < date(FROM_UNIXTIME(rr.timemodified)) THEN (DATEDIFF(DATE_ADD(FROM_UNIXTIME(rr.timemodified), INTERVAL p.validFor MONTH) , NOW())) 
    WHEN date(validFrom) > date(FROM_UNIXTIME(rr.timemodified)) THEN (DATEDIFF(DATE_ADD(validFrom, INTERVAL p.validFor MONTH) , NOW())) 
END)AS daysLeft, 
IF (rr.timemodified < g.timemodified, (DATEDIFF(DATE_ADD(FROM_UNIXTIME(g.timemodified), INTERVAL p.validFor MONTH) , NOW())- (validFor * 30.48))) as daysLeft 

FROM mdl_readtickbox_responses rr 
JOIN mdl_readtickbox r ON r.id = rr.readtickboxid 
JOIN mdl_course c ON c.id = r.course 
JOIN mdl_procedures p ON p.id = c.idnumber 
JOIN mdl_groups_members gm ON gm.userid = rr.userid 
JOIN mdl_groups g ON g.id = gm.groupid 
WHERE rr.userid = '2' 
AND g.courseid = r.course 
AND p.status != 'obsolete' 
ORDER BY p.priority, daysLeft 

답변

0

당신은 완전히 :) 한 Statment

IF (rr.timemodified < g.timemodified, (DATEDIFF(DATE_ADD(FROM_UNIXTIME(g.timemodified), INTERVAL p.validFor MONTH) , NOW())- (validFor * 30.48)), *********) as daysLeft 
                                        --->>>>> write your else conditon here             
+0

감사합니다 경우에 다른 잊었 당신이 :) 환영합니다 :) – Erika

+0

를 잊었다! 귀하의 질문을 해결했다면 해결 된 대답을 받아 들여야합니다. –

0

당신은 FALSE 부분

은 expr1이 TRUE 인 경우

IF (
     rr.timemodified < g.timemodified, 
     (DATEDIFF(DATE_ADD(FROM_UNIXTIME(g.timemodified), INTERVAL p.validFor MONTH) , NOW())- (validFor * 30.48)) 
    ) as daysLeft 

IF(expr1,expr2,expr3) (expr1을 <에게 해달라고 : 내가 너무 오래 그것을보고 생각하기 때문에 어쩌면 사람은 실수를 본다 > 0 and expr1 <> NULL) IF()는 다음을 반환합니다. expr2; 그렇지 않으면 expr3을 리턴합니다.