2010-09-17 9 views
0

J'ai une table qui essaie de filtrer un ID particulier (débarrassé) qui tombe entre des dates particulières .... mais! ce que je reçois est une requête qui ne considère pas l'ID (débarrasser) comme condition.Problème avec la requête MySQL

C'est la requête:

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 

C'est la structure de la table pour la réservation:

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 

Répondre

3

supports d'utilisation Try pour les conditions de date:

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

Merci pour cela cela fonctionne bien maintenant. – majimoto

+0

@majimoto: Ne pas oublier d'accepter la bonne réponse (en cochant) – abatishchev

0

essayez celui-ci

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

A le même problème que ma requête ... mais la solution de Michael Pakhantsov fonctionne bien – majimoto

0

Je pense que vous aurez besoin d'utiliser des parenthèses autour de toutes vos conditions OR en tant que groupe afin qu'il sache comment appliquer les conditions AND à la fin.