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 :
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'
                )
        );
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.

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