'soir
Je me prend la tête sur une requête de réservation hôtelière Explications :
- Selon deux colonnes date_debut et date_fin pouvoir vérifier si une chambre donnée peut être réservée selon une période.
- Les arrivées (date_debut) se font après midi et les départs (date_fin) avant midi.
- Une chambre peut être réservée pour la journée ou quelques heures ce qui donne dans la base pour la journée du 10 juillet 2009 date_debut : 2009-07-10 et date_fin : 2009-07-10.
Pour infos mais ça ne sert pas à grand chose, voila ce que j'ai actuellement et qui en fonctionne pas correctement :
Structure db :
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
19
20
21
22
23
24
25
26
27
28 SET @var_date_debut = '2009-05-23'; SET @var_date_fin = '2009-05-25'; SELECT * FROM `reservations` WHERE `chambre` =26 AND ( @var_date_debut BETWEEN reservations.date_debut AND reservations.date_fin OR @var_date_fin BETWEEN reservations.date_debut AND reservations.date_fin OR reservations.date_debut BETWEEN @var_date_debut AND @var_date_fin OR reservations.date_fin BETWEEN @var_date_debut AND @var_date_fin ) AND ( ( @var_date_fin != date_debut AND ( @var_date_debut != date_debut AND @var_date_fin != date_fin ) ) XOR ( ( ( @var_date_debut = date_debut AND @var_date_fin = date_fin ) XOR @var_date_debut = date_debut ) ) )
Un peu de contenu :
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 -- -- Structure de la table `reservations` -- CREATE TABLE IF NOT EXISTS `reservations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_client` int(11) DEFAULT NULL, `chambre` smallint(2) NOT NULL, `nb_adultes` int(11) DEFAULT NULL, `nb_enfants` int(11) DEFAULT NULL, `date_debut` date NOT NULL, `date_fin` date NOT NULL, PRIMARY KEY (`id`), KEY `id_client` (`id_client`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2626 ;
please need help
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 -- -- Contenu de la table `reservations` -- INSERT INTO `reservations` (`id`, `id_client`, `chambre`, `nb_adultes`, `nb_enfants`, `date_debut`, `date_fin`) VALUES (2625, NULL, 26, NULL, NULL, '2009-06-06', '2009-06-09'), (2621, NULL, 26, NULL, NULL, '2009-06-01', '2009-06-02'), (2619, NULL, 26, NULL, NULL, '2009-06-02', '2009-06-05'), (2611, NULL, 26, NULL, NULL, '2009-05-30', '2009-05-31'), (2607, NULL, 26, NULL, NULL, '2009-05-29', '2009-05-29');
Partager