2013-05-03 4 views
-4
mysql

j'ai une question que je voudrais partager avec vous ..dates entre les dates

Say, nous avons un site avec les réservations d'hôtel et nous avons deux champs DateIn et DateDeSortie.

Eh bien, je voudrais voir si toutes les dates entre les DateIn et DateDeSortie sont gratuits ...

Je veux le faire en utilisant MySQL ..

Comme ça:

SELECT hotelname FROM hotel WHERE .. 

(all dates >= DateIn and dates<=DateOut are free) -> comment puis-je dire cela dans mysql?

Merci d'avance !! Je pense que ce n'est pas quelque chose de difficile, mais je ne peux pas le trouver ...

Répondre

0

si le champ libre est un bool (tinyint), vous pouvez essayer quelque chose comme ceci:

SELECT * FROM (
SELECT `hotelName`, MIN(`available`) AS _available FROM `hotels` WHERE dbdate BETWEEN 20130507 AND 20130511 GROUP BY `hotelName`)a 
WHERE _available; 

La requête ci-dessus a donné à la fois En conséquence, lorsque vous changez de 20130507 à 20130503, l'hôtel ne sera renvoyé que par l'hôtel.

avec cela comme une table de test:

CREATE TABLE `hotels` (
    `hotelName` varchar(20) DEFAULT NULL, 
    `dbdate` int(11) DEFAULT NULL, 
    `available` tinyint(1) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

/*Data for the table `hotels` */ 

insert into `hotels`(`hotelName`,`dbdate`,`available`) values ('Amsterdam Hotel',20130503,1),('Amsterdam Hotel',20130504,1),('Amsterdam Hotel',20130505,1),('Amsterdam Hotel',20130506,1),('Amsterdam Hotel',20130507,1),('Amsterdam Hotel',20130508,1),('Amsterdam Hotel',20130509,1),('Amsterdam Hotel',201305010,1),('Amsterdam Hotel',201305011,1),('Amsterdam Hotel',201305012,1),('Utrecht Hotel',20130503,0),('Utrecht Hotel',20130504,0),('Utrecht Hotel',20130505,0),('Utrecht Hotel',20130506,0),('Utrecht Hotel',20130507,1),('Utrecht Hotel',20130508,1),('Utrecht Hotel',20130509,1),('Utrecht Hotel',201305010,1),('Utrecht Hotel',201305011,1),('Utrecht Hotel',201305012,0); 
+0

Merci beaucoup !!! –

+0

pas de problème ;-) - – user369122

+0

Attention: Avec cette méthode, vous devez avoir toutes les dates et la disponibilité pour tous les hôtels pour travailler. – user369122