begin process at 2012 05 27 00:28:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Oracle

 > 

Requêtes

 > 

Problême de Requête SQL dans une BdD


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problême de Requête SQL dans une BdD

lundi 5 avril 2010 à 16:23:10 | Problême de Requête SQL dans une BdD

waldyl

Bonjour à toutes et à tous :)

J'ai un petit soucis au niveau d'une requête, je me remet donc à vous, sans vous sur-estimez


Voila l'idée de la requête :
"Quelles chambres d'un hôtel donné sont libres aux périodes indiquées ?"

Je "navigue" entre 3 tables assez simples :

Code :
CREATE TABLE RESERVATION
   (
     NUM_RESERVATION NUMBER(4) NOT NULL, 
     NUM_CLIENT NUMBER(4) NOT NULL,
     DATE_DEMANDE_RESA DATE ,
     ARRHES_VERSE CHAR(32) , -- TRUE OR FALSE
     DATE_DEB_RES DATE ,
     DATE_FIN_RES DATE ,
     CONSTRAINT PK_RESERVATION PRIMARY KEY (NUM_RESERVATION) 
   );


Code :
CREATE TABLE CHAMBRE
   (
     NUM_CHAMBRE NUMBER(4) NOT NULL,
     NUM_HOTEL NUMBER(4) NOT NULL,
     CONSTRAINT PK_CHAMBRE PRIMARY KEY (NUM_HOTEL, NUM_CHAMBRE) 
   );



Code :
CREATE TABLE CONCERNE
   (
     NUM_RESERVATION NUMBER(4) NOT NULL,
     NUM_HOTEL NUMBER(4) NOT NULL,
     NUM_CHAMBRE NUMBER(4) NOT NULL,
     NB_OCCUPANT NUMBER(4) ,
     CONSTRAINT PK_CONCERNE PRIMARY KEY (NUM_RESERVATION, NUM_HOTEL, NUM_CHAMBRE) 
   );




Voici la requête que j'essaie de faire passer :



Code :
SELECT NUM_CHAMBRE NumeroChambre
FROM CHAMBRE C1
WHERE NOT EXISTS ( SELECT NUM_RESERVATION
		   FROM  RESERVATION R
		   WHERE NOT EXISTS 	( SELECT NUM_CHAMBRE 
					  FROM CONCERNE C2
					  WHERE C1.NUM_CHAMBRE    = C2.NUM_CHAMBRE
					  AND R.NUM_RESERVATION = C2.NUM_RESERVATION
					  AND C2.NUM_HOTEL      = (SELECT NUM_HOTEL
							           FROM HOTEL														                                           WHERE UPPER(NOMHOTEL) = UPPER('&NOMHOTEL')))
		  AND R.DATE_FIN_RES < TO_DATE('&DateDebut_DDslashMMslashYYYY', 'DD/MM/YYYY')
		  AND R.DATE_DEB_RES > TO_DATE('&DateFin_DDslashMMslashYYYY', 'DD/MM/YYYY'))
/




-- &NOMHOTEL 											: nom de l'hôtel en paramètre
-- TO_DATE(&DateDebut_DDslashMMslashYYYY, 'DD/MM/YYYY') : Date du début du séjour ( format : DD/MM/YYYY )
-- TO_DATE(&DateFin_DDslashMMslashYYYY, 'DD/MM/YYYY')   : Date de fin du séjour   ( format : DD/MM/YYYY )
-- DateDebut doit être supérieur à une date de fin de réservation pour la chambre,
-- de même DateFin doit être inférieur à une date de début de réservation pour la chambre.



Comme vous vous en doutez, le requête ne fonctionne pas, puisque me renvoi un nombre de tuple abérant.
Je ne sais pas si c'est une petite bricole où toute la syntaxe qui est à revoir,
c'est pourquoi j'aimerai avoir votre avis, en cette journée ce qui cloche !

Dylan.
jeudi 8 avril 2010 à 16:36:03 | Re : Problême de Requête SQL dans une BdD

vpoyo

salut essaye ceci :

en résonnant de l'intérieur vers l'extérieur, je sélectionne les réservations existantes dans la plage,
ensuite on sélectionne les chambres dans la table "CONCERNE" pour lesquels il y a une réservation,
pour finir on prend les chambres qui n'ont pas de réservation

SELECT C1.NUM_CHAMBRE NumeroChambre
FROM CHAMBRE C1
WHERE
NOT EXISTS
(
SELECT 1
FROM CONCERNE C2
WHERE
EXISTS
(
SELECT 1
FROM RESERVATION R
WHERE R.DATE_FIN_RES < TO_DATE('&DateDebut_DDslashMMslashYYYY', 'DD/MM/YYYY')
AND R.DATE_DEB_RES > TO_DATE('&DateFin_DDslashMMslashYYYY', 'DD/MM/YYYY')
AND R.NUM_RESERVATION = C2.NUM_RESERVATION
)
AND C2.NUM_CHAMBRE = C1.NUM_CHAMBRE
AND C2.NUM_HOTEL = C1.NUM_HOTEL
)

Cordialement,
Vincent
dimanche 11 avril 2010 à 14:39:39 | Re : Problême de Requête SQL dans une BdD

waldyl

Merci,

je test ça au plus vite :)


Cette discussion est classée dans : date, num, not, reservation, chambre


Répondre à ce message

Sujets en rapport avec ce message

/!\ Probleme trigger /!\ [ par Art_huR ] bonjour,voila je fais un trigger pour ma base qui consiste a prendre la date d'une table que l'on vient de saisir (reservation) et que l'on introduit requete sql sur 2 tables [ par lavande4 ] bonjourj'essaie de faire cette requete :mysql_query("select nom_client, prenom_client, date_format(Date_arrivee_reservation, '%d/%m/%Y') as date_arriv aide pour une requete [ par njo80 ] J'ai dans une table plusieurs colonnes, dont une NUM, INS et DATEJe dois compter  le nombre de jour entre de  date.les NUM vont en s'incrémentant et p Une requete qui renvoie NULL [ par fzed51 ] SELECT  SUM((HOUR(Fin)*60+MINUTE(Fin))-(HOUR(Debut)*60+MINUTE(Debut))) FROM horaire WHERE (WEEK(Date, 1)=1);Cette requète doit renvoyer la somme (en m probleme oracle [ par celeste87 ] Slt à tous j'ai un probleme avec mon package MAJ_SALARIES(qui permet de mettre à jour la table salarié et pour un salarié si j'insere un enfant je met probleme urgent de triggers____ aidez moi SVP-- [ par adilol ] bonjour tout le monde,      SVP,aidez moi,j ai un probleme a resoudre dans 24h c tellement urgent.    voici le probleme:    je dois creer un trigger q Index [ par fdouieb ] Bonjour J'utilise ASE version 15 Je possède une table avec 100 millions de ligne create table myTable( col1_id int not null, col2_i PB TRIGGER [ par sy3ns ] J'ai une table dans ma base de donnée reservation CREATE TABLE reservation ( ... datearrivee date NOT NULL, datedepart date NOT NULL, ...) ;------ Taux occupation [ par citt ] Bonjour,Je voudrait savoir comment réaliser une requete me donnant le taux d'occupation de chambres.Voici ma table :[code]CREATE TABLE [dbo].[reservat Insertion dans une table [ par mahz ] Bonsoir, J'ai un probleme d'insertion dans une table.Je m'explique : j'ai deux table a savoir chambre et reservation. Je veux inserer quelques donnees


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales