Bonjour à tous,
J'ai trouvé sur le forum différentes pistes pour créer une requête de recherche de disponibilité d'appartements sur une période donnée.
Voici la requête sous MySQL que j'ai fini par appliquer :
Ceci fonctionne très bien si dans ma table periods, je n'ai aucun appartement qui aurait une réservation dans la période considérée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 SELECT `Apartment`.`id`, `Apartment`.`name`, `Apartment`.`sleepings`, `Apartment`.`rooms`, `Apartment`.`floorarea` FROM `apartments` AS `Apartment` WHERE `Apartment`.`is_online` = 1 AND `Apartment`.`is_available_to_rent` = 1 AND `Apartment`.`sleepings` >= 1 AND `Apartment`.`city_id` = 2 AND NOT EXISTS ( SELECT id FROM periods as `Period` WHERE `Period`.`start_date` BETWEEN '2012-04-02' AND '2012-04-13' OR `Period`.`end_date` BETWEEN '2012-04-02' AND '2012-04-13' OR ( `Period`.`start_date` < '2012-04-02' AND `Period`.`end_date` > '2012-04-13' ) );
Par contre, dès que j'ai plusieurs appartements dans la table periods, dont l'un au moins a une réservation incluse dans ou chevauchant la période de réservation, alors forcément la requête me renvoie 0 résultat.
J'ai du mal à imaginer la requête qui me permettrait de ramener les appartements disponibles, tout en éliminant ceux qui ont une réservation
Merci par avance à ceux qui pourront m'orienter vers la bonne piste
Partager