Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: chipChop le le 05-03-2013 a 15:20:44

Titre: Probleme pour une requete SQL -Help
Posté par: chipChop le le 05-03-2013 a 15:20:44

Bonjour à tous,
Je me présente je suis étudiante en programmation je fais une licence pro. Pour un de mes projets : Création d'un système de réservation hôtel j'ai un soucis avec une requête SQL.

Voilà ce que j'aimerai faire :

Code :

SELECT resourceid, datebegin, dateend, price, quantite, id_calendar
FROM wp_res_calendar
WHERE '2013-03-03' >= datebegin and '2013-03-03'<= dateend
GROUP BY resourceid
ORDER BY id_calendar DESC


J’ai des chambres d’hôtels avec un prix et une quantité par défaut pour chaque chambres

Ex : chambre double quantité :2 prix : 135 euros
Chambre simple quantité : 3 prix : 70 euros

Dès que la chambre se créer, elle s’insère en base de données

Je créer des événements qui permettent de mettre des prix et une capacité à une certaine période

Ex : chambre double quantité : 3 prix : 150 euros du 18 avril au 30 avril 2013

Dès que je créer un événement il s’insère en base de données dans une table spécifique.

Mais imaginons je créer un événement une semaine plus tard.

Ex : chambre double quantité : 4 prix : 160 euros du 25 avril au 5 juin 2013


Tous les résultats s’affiche dans un calendrier qui indique pour le jour l’événement qu’il y a à cette date

Ex : le 28 avril 2013 chambre double quantité : 4 prix : 160 euros.

Seulement ma base de données me renvoie deux événements (normal pour cette date j’ai deux événement) mais je n’en veux qu’un et je veux le plus récent des deux (donc l’id le plus grand avec les informations de cet ID et non pas de l’autre) .

Ex : le 28 avril 2013 chambre double quantité : 4 prix : 160 euros et non quantité : 3 prix : 150 euros


      



Titre: Re:Probleme pour une requete SQL -Help
Posté par: chipChop le le 05-03-2013 a 16:23:35

:'( S'il vous plait une idée je deviens folle j'y arrive pas ! C'est sous mes yeux mais je vois pas !)

Titre: Re:Probleme pour une requete SQL -Help
Posté par: Agence Annecy le le 05-03-2013 a 17:31:45

<?php
//--- Récupérer le dernier id dans une table ---//
//--- Les variables ---//
$tb="table";

//--- Une méthode ---//
$req1="select max(id) from $tb";
$res1=mysql_query($req1);
$idmax1=mysql_result($req1,0,"max(id)");
echo $idmax1;

//--- Une deuxième ---//
$req2="select id from $tb order by id desc limit 1";
$res2=mysql_query($req2);
$idmax2=mysql_result($res2,0);
echo $idmax2;
?>

Titre: Re:Probleme pour une requete SQL -Help
Posté par: chipChop le le 05-03-2013 a 17:37:36

Non ça ne convient pas

Concernant la première méthode : la requête ne va prendre que l'id le plus grand de toute la table et non de la chambre associé.

Concernant la deuxième méthode : il y a le limit 1 (ce qui va nous donner un seul résultat) alors que moi je veux tous les évènements de toutes les chambres pour une seule date.

Ex : au 28 avril 2013
chambre double quantité : 4 prix: 160 € au lieu de quantité : 3 prix : 135 €
chambre simple quantité : 2 prix : 80 € au lieu de quantité : 3 prix : 70 €

Mais merci quand même pour la réponse
:)

Titre: Re:Probleme pour une requete SQL -Help
Posté par: chipChop le le 05-03-2013 a 18:29:04

Désolé si je me fais mal comprendre mais, mon problème est un peu compliqué à expliquer donc je vais essayer de mieux résumé mon problème avec un exemple.

Ex :

- j'ajoute un évènement du 5 mars au 5 avril 2013

chambre double quantité : 3 prix : 135 euros

- une semaine plus tard j'ajoute un nouvel évènement du 10 mars au 30 mars 2013

chambre double quantité : 2 prix : 140 euros

On fait une requête


SELECT resourceid, datebegin, dateend, price, quantite, id_calendar
FROM wp_res_calendar
WHERE '2013-03-10' >= datebegin and '2013-03-10'<= dateend
ORDER BY id_calendar DESC


Cela nous sort tous les évènements de toutes les chambres au 10 mars 2013

Du coup le 10 mars on se retrouve avec deux évènements pour la chambre double sauf que moi j'en veux qu'un et je veux l’évènement le plus récent rentré en base de données.

Par exemple je veux que mon calendrier affiche par exemple au 10 mars 2013 pour la chambre double : quantité : 2 prix : 140 euros
et non quantité : 3 prix: 135 euros et quantité : 2 prix : 140 euros

S'il vous plait aider moi ... :)

Titre: Re:Probleme pour une requete SQL -Help
Posté par: AlainPost le le 12-03-2013 a 18:07:59

Donc logiquement, si ton truc marche, tu rajoute :
LIMIT 0,1
Comme ça dans l'hypothèse où le reste de la requête est bon, tu récupère le résultat le plus ancien.

Titre: Re:Probleme pour une requete SQL -Help
Posté par: pppplus le le 12-03-2013 a 18:21:27

il faut bien utiliser le GROUP BY pour n'avoir qu'un événement qui matche la requête

Après tu dois faire une 2ème requête, pour récupérer le dernier ID qui correspond à la recherche.

Je ne vois pas comment faire une seule requête pour récupérer les infos qu'il te faut.

Titre: Re:Probleme pour une requete SQL -Help
Posté par: gagnedescodes le le 15-03-2013 a 17:47:16

Salut

Dans les systèmes de réservation d'hôtel ou d'avoir c'est toujours à peu près la même chose et donc soit les personnes demandent sur une période donner du 15/03/2013 au 26/03/2013 ou à partir de tel date pour tant de jours. Dans ce cas tu peut avec mysql faire un interval. Plus de détail sur les intervals dans cette url : http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html

J'espère bien avoir compris ta problématique sinon n'hésite pas.


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.