2012-03-17 1 views
0

誰かが私の質問に間違っていることを教えてもらえますか? 週末が日曜日の午後6時から金曜日の午後9時まで表示され、週末が "1"に設定されている場合は、週末と呼ばれる列に基づいてテーブルのデータを取得しようとしています。MYSQLクエリで何が問題になりますか?

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

weekend cantが0と1の両方になることはありません。 – Rufinus

答えて

-2

私の最初の推測では

SELECTフィールド1、フィールド2には、...

不足しているということでしょうか?

+0

これは私がまさに持っているものです。 「SELECT * FROM 閉鎖 closures.weekend = 0 OR WEEKDAY(NOW())<4 とclosures.weekend = 1 OR WEEKDAY(NOW()) > 4 OR (WEEKDAY(NOW())= 4、HOUR(NOW())> 21) OR (WEEKDAY(NOW())6とHOUR(NOW())<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

場合を私はそれが私にこのエラーを与えるクエリ: 無効なクエリ: 'NOW' 'where句'の中の 'NOW' – user1221373

+0

@ user1221373私はタイプミスを持っていました - それは今固定されており、テストされました – Alnitak

+0

ありがとう非常にmuc h!はい、それは動作します。今私はMYSQLの本を手に入れようと思っています。再度、感謝します! – user1221373

0

したがって、あなたは何をする必要があるかは、それは週末だかいないかに応じて1または0の値を生成し、その後weekendがその値を持つSELECTそれらの行、すなわち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と週末からORに切り替えるとうまくいくはずです。知識の不足のために、私は非常にmysqlの新しいです。 – user1221373

+0

正直言って、彼が達成しようとしていることはかなりわかっていません:) – Rufinus

関連する問題