Double imbrication de requetes avec "GROUP BY" [Résolu]

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
- - Dernière réponse : J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
- 1 sept. 2005 à 21:57
Bonjour,



Soit les tables

Hotel(idChambre, ...)

Reservation(idResa, IdChambre, NbPersonne, IdDate)

Annulation(IdAnnul, NbAnnule)



Je souhaiterai connaitre la fréquentation de chaque chambre

Mais, il peut y avoir plusieurs annulations par reservation et plusieurs reservations par chambre !!!



SELECT

IdResa,

IdChambre,

(r.NbPersonne - ( SELECT SUM(a.NbAnnule) FROM
Annulation AS a WHERE a.IdResa=r.IdResa GROUP BY a.IdResa))
AS NbPersonne

FROM Reservation AS r



Ici, j'ai bien le nombre de personne par reservation, annulations comprises...

Mais comment grouper sur les identifiants de chambre



Quand j'essaye, il refuse catégoriquement!

PS : J'utilise ACCESS



Si quelqu'un à déjà fait ce genre de truc... Merci
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
6
3
Merci
J'ai fini par trouver tout seul,

alors je laisse la réponse pour les mecs qui galère comme moi :



SELECT

h.IdChambre,

SUM(g2.NbPersonne) AS NbTotal

FROM

Hotel AS h,

(

SELECT

r2.IdResa AS IdChambre,

SUM(g1.NbPersonne) AS NbPersonne

FROM

Reservation AS r2,

(

SELECT

r1.IdResa AS IdResa,

r1.NbPersonne AS NbPersonne

FROM

Reservation AS r1

)

UNION ALL

(

SELECT

a.IdResa,

-a.NbAnnule

FROM

Annule AS a

) AS g1

WHERE

g1.IdResa=r2.IdResa

GROUP BY

r2.IdResa

) AS g2

WHERE

g2.IdChambre=h.IdChambre

GROUP BY

h.IdChambre

ORDER BY

h.IdChambre





Ah bah ouai... Faut bien tout ça!!!!!!!!

Merci ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de J_G