Double imbrication de requetes avec "GROUP BY"

Résolu
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 à 12:22
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

1 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 10
1 sept. 2005 à 21:57
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 ;)
3
Rejoignez-nous