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

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
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
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 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Dernière intervention
28 août 2007
5
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 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de J_G

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.