2012-03-17 2 views
0

누군가 제 쿼리에 어떤 문제가 있는지 알려주실 수 있습니까? 일요일 오후 6 시부 터 금요일 오후 9 시까 지 주말을 "주"로 설정하고 주말을 "1"로 설정하면 주말이라는 열을 기반으로 내 테이블에서 데이터를 가져 오려고합니다. 금요일 오후 9 시부 터 일요일 오후 6 시까 지 표시합니다.MYSQL QUERY에 무슨 문제가 있습니까?

SELECT * 
FROM closures 
WHERE closures.weekend = 0 
     OR WEEKDAY(NOW()) < 4 
     AND closures.weekend = 1 
     OR WEEKDAY(NOW()) > 4 
     OR (WEEKDAY(NOW())=4 AND HOUR(NOW())>21) 
     OR (WEEKDAY(NOW())=6 AND HOUR(NOW())<18) 
+1

서식을 잘라내어 코드를 잘라 냈습니까? 아니면 해당 문장에 실제로 '선택'이 없습니까? – dougajmcdonald

+0

SELECT 부분이 누락되었습니다. –

+0

주말은 0과 1이 둘 다 없습니다. – Rufinus

답변

-2

내 첫번째 추측은

SELECT 필드 1, FIELD2가 ...

없는 것입니다?

+0

이 내가 정확히 무엇을 가지고 : 는 "* FROM 폐쇄 을 선택 WHERE closures.weekend = 0 또는 WEEKDAY (NOW()) <4 및 closures.weekend = 1 또는 WEEKDAY (NOW()) > 4 OR (WEEKDAY (NOW()) = 4 AND NOW HOUR (())> 21) OR (NOW WEEKDAY (()) = NOW 6 AND HOUR (()) <18) " – user1221373

2

문구를 올바르게 사용하는 데 도움이됩니다. 당신이 말했어야하는 것은 "입니다. 금요일 오후 9 시부 터 6 시부 터 일요일 사이에 행을 표시하려면 closures.weekend = 1을 입력하고 그렇지 않으면 closures.weekend = 0"을 표시하십시오.

SELECT * 
FROM 
    closures 
WHERE 
    weekend = IF(
     (WEEKDAY(NOW()) = 4 AND HOUR(NOW()) >= 21) 
     OR (WEEKDAY(NOW()) = 5) 
     OR (WEEKDAY(NOW()) = 6 AND HOUR(NOW()) < 18) 
    , 1, 0) 
+0

때 나는 그것이 내게이 오류를 준다는 것을 묻는다 : 잘못된 질의 : 알 수없는 열 'where 절'에있는 'NOW' – user1221373

+0

@ user1221373 나는 오타가 있었는데 - 이제 고쳐졌고 테스트되었다. – Alnitak

+0

고맙다. h! 예, 작동합니다. 이제는 MYSQL에 대한 책을 가져 오는 시간이 있다고 생각합니다. 다시 한 번 감사드립니다! – user1221373

0

주말이 될 캔트 : 즉

은 따라서 당신이해야 할 것은, 주말의 여부, 다음 SELECTweekend 그 값을 가지고 해당 행 여부에 따라 1 또는 0의 값을 생성입니다 둘 다 0과 1

SELECT * 
FROM 
    closures 
WHERE 

    closures.weekend = 0 
    OR 
    ( 
    WEEKDAY(NOW()) < 4 
    AND closures.weekend = 1 
) 
    OR WEEKDAY(NOW()) > 4 
    OR 
(WEEKDAY(NOW())=4 AND HOUR(NOW())>21) 
OR 
(WEEKDAY(NOW())=6 AND HOUR(NOW())<18) 
+0

추가 괄호는 연산자 우선 순위를 변경하지 않았습니다. – Alnitak

+0

그래서 주말과 주말을 AND로 전환하면 제대로 작동합니까?지식 부족으로 인해, 나는 mysql에 대해 아주 새로운 것이다. – user1221373

+0

솔직히 말해서, 그가 무엇을하려고하는지 명확히 모르겠다. :) – Rufinus

관련 문제