|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
Bonjour à tous
Pour un travail d’étude je dois gérer des chambres d’hôtel (réservation). Dans ma table réservation, j'ai une date de début (DateDebut) de type date et une date de fin (DateFin) de type Date. Mon souci est dans la requête qui doit me dire le nombre de chambres réservées entre deux dates choisies. J'ai essayé avec le between pour la date de début et de fin, mais ça ne correspond pas. Si une chambre est réservée avec une date début qui se trouve pas les dates du between mais qui est réservée durant l'espace de temps voulu ne s'affiche pas. J'ai essayé avec le <= à une date et le >= à une date pour la date début et la date fin, identique que précédemment ça ne fonctionne pas correctement. Il y aurait une autre manière de faire avec d'autres commandes où la structure des date de début et date de fin pour les réservations est fausse pour une tel requête Je vous remercie par avance de l'aide que vous allez m'apporter Di Blasio Michael |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Ton exposé n'est pas assez précis. Plusieurs cas se présentent pour une chambre.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
Salut,
Tout à fait, les points exposés ci-dessus sont tout à fait justes. Et c'est ceci que je n'arrive pas à résoudre dans la requête. C'est possible que certains ne puissent pas être résolus avec la structure de la table que j'ai date début et fin. Tu voudrais plus de précision mais je n'ai pas compris ce que voulais dire avec les empans minimum et maximum d'une location. Merci |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Citation:
Ce qu'il faut nous préciser est donc si une location peut intervenir pour une durée inférieure à une journée (matinée, jour, nuit), les horaires des locations (d'aujourd'hui 10h AM à demain 9:59 AM, par exemple) car dans ce cas on est à cheval sur deux dates. D'autre part si l'on veut connaître le nombres de chambres louées sur une période, veut-on connaître seulement le nombre de chambres louées ou le nombre de jours de locations, si une chambre est louée plusieurs fois sur la période doit-elle être comptabilisée plusieurs fois ? Etc, etc ...
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
Le but de l'exercice est de savoir s'il y a encore des chambres de libres durant la période demandée.
Les chambres sont louées à la journée. Exemple : si elle se libère le 6.08.2011 et que je recherche pour cette date. Moi je dois recevoir l'info comme si elle était louée. Car dans mon exercice, je ne gère pas le service de nettoyage, donc je ne peux pas savoir après combien de temps effectivement elle est disponible. Donc, pour chaque type de chambre (simple, double,etc), j'ai le nombre de chambres disponibles. L’établissement fait les réservations et moi avec cette base de données je dois pouvoir savoir si, par exemple du 2.08.2011 au 6.08.2011, il reste une chambre double de libre. J'espère que c'est cela que tu me demandais Merci |
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Tout cela me fait penser tant à la citation de Nicolas Boileau que Cinephil a apposée à sa signature
Citation:
Citation:
Citation:
Citation:
Il te faut absolument commencer par faire de gros efforts pour t'exprimer avec précision si tu veux avoir une chance d'être compris de tes interlocuteurs. Tu te rends bien compte que ta demande finale est, en logique, à l'exact opposé de ta demande initiale, non ? Demeure une question, veut-on savoir quelles chambres sont totalement libres pour la période considérée ou, également celles qui offrent des créneaux de disponibilité pendant ladite période ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
||||
|
10
|
|
|
#7 |
![]() ![]() |
Un cas similaire d'il y a deux jours dans cette discussion et j'y donne la solution au message 5.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#8 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
Je te remercie cinephil. Je vais regarder ce que ça donne.
Ce que tu dis Maljuna Kris est tout à fait vrai. Revenons au modèle. Mon exercice consiste à une gestion de plusieurs établissements hôteliers. Je dois faire une application web qui me permet de savoir quel établissement hôtelier dispose de chambres de tel type durant une durée donnée. Exemple: je veux savoir quel établissement dispose d'une chambre matrimoniale du 8.08.2011 au 15.08.2011. A ce stade, mon application devrait me donner la liste de tous les établissements ayant ce type de chambre libre durant cette période. Pour pouvoir gérer les chambres libres, je dois savoir celle qui sont occupées et pour cela j'utilise une table Reservation avec une date de début (DateDebut) et une date de fin (DateFin). Mon souci est de pouvoir gérer les cas dont tu me fais part dans ton post ci-dessus
Est-ce possible de pouvoir gérer ces différentes variantes avec une date de début et une date de fin, comme je le fais ou il faut que je le gère différemment ? Je vous remercie encore pour toute votre aide J'espère que je suis assez clair dans mes explications Je mets mon modèle en lien. |
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Concernant le schéma de ta base de données je dirais que la relation "effectuer" entre la table établissements et la table réservations n'a d'intérêt que si une réservation dans un établissement peut être effectuée par un autre établissement.
La colonne NbreChambre, si elle correspond au numéro de la chambre, est mal nommée. S'agissant de ton problème on peut le reformuler plus simplement. Quelles sont les chambres de tel type pour lesquelles il n'existe pas de réservation pour la période considérée. Pour ce faire il faut commencer par filtrer la table chambres sur le type de chambre (paramètre externe à la requête) puis faire une jointure externe avec la table réservations pour toutes les réservations de ces chambres dont la date de début est inférieure ou égale à la date de fin de la période (paramètre externe) et la date de fin supérieure ou égale à la date de début de la période(paramètre externe). Les chambres pour lesquelles la jointure retourne NULL seront totalement disponibles pour la période. Ce qui peut nous donner la requête suvante Code MySQL :
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
||
|
00
|
|
|
#10 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
Excusez-moi pour ce silence, je suis parti quelques jours en vacances.
Salut, Un grand merci à toi Maljuna Kris pour ces informations bien précieuses. Pour NbreChambres, ce n'est pas le no de la chambre mais le nombre de chambres de ce type dont dispose l’établissement. Comme tu le dis ci-dessus, une réservation pour l’établissement x ne peux être enregistrée que par l'établissement x. Par contre, je ne comprends pas pourquoi la relation n'a d'intérêt que si une réservation dans un établissement peut être effectuée par un autre établissement. Si je supprime cette relation, quand un établissement ajoute une réservation, je ne peux pas savoir quel établissement a inséré cette réservation. |
|
|
00
|
|
|
#11 | ||
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Citation:
Citation:
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
||
|
00
|
|
|
#12 |
|
Membre du Club
![]() Michael Di Blasio Étudiant Inscription : mai 2008 Messages : 138 ![]() |
ok
Je te remercie pour toutes ces informations |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com