2010-09-17 93 views
0

我有一個表,試圖過濾特定日期之間的特定ID(擺脫)......但!所得到的是一個不考慮ID(rid)作爲條件的查詢。問題與MySQL查詢

這是查詢:

SELECT * FROM booking 
    WHERE '2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY 
    OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto 
    OR datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY 
    AND **rid = '5' 
    AND active = '1'** 
    LIMIT 0 , 30 

這是預訂的表結構:

bid  gid  rid  datefrom  dateto   active 
================================================================= 
1  1  1  2010-09-16  2010-09-20  1 
8  9  2  2010-09-06  2010-09-16  1 
7  8  2  2010-09-23  2010-09-28  1 

回答

3

嘗試使用括號內爲日期條件:

SELECT * FROM booking 
    WHERE rid = '5' 
    AND active = '1' 
    AND ('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY 
    OR '2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto 
    OR datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
    LIMIT 0 , 30 
+0

感謝您的支持,現在可以正常工作。 – majimoto 2010-09-17 06:18:46

+0

@majimoto:不要忘記接受正確的答案(使用勾號) – abatishchev 2010-09-17 06:21:14

0

試試這個

SELECT * FROM booking WHERE 
('2010-10-01' BETWEEN datefrom AND dateto - INTERVAL 1 DAY) 
OR ('2010-10-09' BETWEEN datefrom + INTERVAL 1 DAY AND dateto) 
OR (datefrom BETWEEN '2010-10-01' AND '2010-10-09' - INTERVAL 1 DAY) 
AND rid = '5' AND active = '1' 
LIMIT 0 , 30 
+0

與我的查詢有同樣的問題......但Michael Pakhantsov的解決方案正常工作 – majimoto 2010-09-17 06:20:08

0

我認爲你需要圍繞所有OR條件使用一些括號作爲一個組,以便它知道如何在最後應用AND條件。