Probleme requete interval date début- date fin pour réservation [MySql] - SQL/NoSQL - Programmation
Marsh Posté le 02-09-2009 à 16:28:37
ça devrait marcher avec ça :
SELECT *
FROM
(
SELECT * FROM reservation
WHERE '2007-02-11' BETWEEN dd AND df
OR '2007-02-17' BETWEEN dd AND df
OR dd BETWEEN '2007-02-11' AND '2007-02-17'
AND df BETWEEN '2007-02-11' AND '2007-02-17'
) AS A
WHERE A.b_id =2
Marsh Posté le 03-09-2009 à 02:41:05
Plus simple :
Code :
|
Marsh Posté le 19-05-2017 à 12:01:45
Merci.
C'est tout bête, et pourtant je m'arrachait les cheveux sur un cas similaire.
Marsh Posté le 21-02-2007 à 16:01:58
Je cherche à gérer des réservatons pour des biens immobiliers. Pour ce faire je dois vérifier qu'une nouvelle réservation (qui a une date de debut et une date de fin) n'entre pas en conflit avec un reservation existant deja ds ma table et correspondant a un bien (une reservation etant aussi définie par un id de bien)
Voici la structure de ma table:
--
-- Structure de la table `reservation`
--
CREATE TABLE `reservation` (
`id` int(7) NOT NULL auto_increment COMMENT 'id de la reservation',
`dd` date default NULL COMMENT 'date debut reservation',
`df` date default NULL COMMENT 'date fin reservation',
`b_id` int(7) default NULL COMMENT 'id de la villa correspondant a la reservation',
`util_id` int(7) default NULL COMMENT 'id du client correspondant a la reservation',
`confirm` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=60 ;
--
-- Contenu de la table `reservation`
--
INSERT INTO `reservation` (`id`, `dd`, `df`, `b_id`, `util_id`, `confirm`) VALUES
(1, '2007-02-17', '2007-02-24', 1, NULL, 0),
(2, '2007-02-02', '2007-02-10', 1, NULL, 0),
(59, '2007-02-02', '2007-02-10', 2, NULL, 0);
Et ma requete qui "soit disant devait me permettre de vérifier qu un interval de temps pour une reservation (et donc pr un bien immo) n'entrait pas en conflit avec une reservation existante correspondant à ce meme bien"
Exemple:
Je veux rentrer une nouvelle réservation avec date debut= '2007-02-11' et
date fin '2007-02-17' qui concerne le bien 2 (b_id=2). Je dois donc avoir en sortie aucun résultat car je fais un tri sur l'id du bien. Pourtant en sortie j'ai un résultat qui concern le bien n°1. Donc voilà impossible de vérifier à une vérification correcte avant insertion. Je sais que ma requête est bizarroide et que j'ai du me faire des chaussettes.
Requete:
SELECT * FROM reservation
WHERE '2007-02-11' BETWEEN dd AND df OR '2007-02-17' BETWEEN dd AND df OR dd BETWEEN '2007-02-11' AND '2007-02-17' AND df BETWEEN '2007-02-11' AND '2007-02-17' AND b_id =2 LIMIT 0 , 30
Si quelqu'un à la gentilesse de tester mon exemple ou une idée concernant la requete ou la structure de la table je suis preneur.
Merci.