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);
Merci beaucoup !!! –
pas de problème ;-) - – user369122
Attention: Avec cette méthode, vous devez avoir toutes les dates et la disponibilité pour tous les hôtels pour travailler. – user369122