2017-05-12 1 views
4

BETWEENOR 조건을 가진 SQL 코드가 있습니다. 위의 코드에서 오류가 발생BETWEEN이 작동하지 않는 상태에서 OR 조건을 사용 중입니다.

SELECT * FROM tbl_order o INNER JOIN tbl_contacts c ON c.contacts_id = o.contacts_id LEFT JOIN tbl_title t ON t.title_id = c.title_id LEFT JOIN tbl_assign a ON (a.order_id = o.order_id AND a.order_no_first = o.order_no_first) WHERE o.order_status = 1 AND o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY) AND CURDATE()) OR o.order_print = 1 GROUP BY o.order_id

,

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR o.order_print = 1 GROUP BY o.order_id LIMIT 0, 25' at line 1

AND 대신 OR을 사용하고있는 경우는, 코드가 완벽하게 작동합니다. 하지만 AND 대신 OR이 필요합니다.

이 오류를 해결하는 방법. 어디에서 잘못하고 있니?

o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY) AND CURDATE()) 

가되어야한다 :

o.order_date BETWEEN DATE(DATE_ADD(o.order_date, INTERVAL -2 DAY)) AND CURDATE() 

BETWEEN는 두 개의 인수를 필요로하고, 두 개의 인수 괄호가 없어야합니다

답변

4

당신은 괄호를 혼합. 이처럼

:

o.order_date BETWEEN X AND Y 

이 좋아되지 않음 :

o.order_date BETWEEN (X AND Y) 
+0

감사합니다. 훌륭하게 작동합니다. –

관련 문제