Bonjour,
ESt-ce que quelqu'un pourrais m'aider svp pour cette exercice??
Exercice:
client (NumCl, NomCl, AdrCL, CodePostalCl, VilleCl)
Commercial (NumCo, NomCo, DateEmbauche)
résidence (NumR, DateConstruction, AdrR, CodePostalR, VilleR)
Logement (NumR#, NumL, NumEtage, NbrPiéces, Superficie)
Transaction, (NumT, DateD, DateF, Etat, NumCl#, NumCo#, NumR#, NumL#, NumP)
Ecrire les requêtes suivantes:
1) Donnez les numéros des transactions ne portant pas sur un parking.
2) Les commerciaux sont en concurrence. Pour chaque résidence commercialisée, celui qui vend le plus d'appartements gagne une prime. Pour mettre à jour l'affichage du tableau d'honneur de la société, vous devez donnez le nopbre maximal d'appartements vendus par un commercial au sein d'une même résidence, toutes résidences confondues (il faudra sans doute deux requêtes)
3) Donnez les clients ayant effectué au maximum trois transactions
4) donnez la résidence qui contient autant de logement que la résidence 4
5) Aprés une réservation, le client a 30 jours pour annuler ou acheter. Au-delà, la réservation est automatiquement annulée pas l'application. Ecrivez la requête réalisant les annulation des réservation concernées
6) Donnez le nombre d'appartements à chaque étage de chaque résidence construite à caen
7) Quel est le numéro du logement le plus grand (superficie) dans la résidence 23?
8) Donnez les logements (numéro de résidence et de logement) qui ont été successivement réservés trois fois, dont les réservations ont toutes été annulées et qui sont toujours en vente.
9) Donnez la liste des clients pour lesquels plus aucune réservation ne sera prise. Ce sont ceux ayant effectué au moin cinq réservation (en cours ou annulées) n'ayant pas abouti à un achat
10)La réservation faite par le commercial 4 le 12/02/2007 donne lieu aujourd'hui à un achat. Seul el logement est acheté, le client renonce au parking numéro 17 qu'il avait réservé avec le logement. Mettez les tables à jour
11) Donnez, pour chaque résidence le nombre de clients possédant plusieurs appartements.
12) donnez la superficie moyenne de tous les appartements en ne prenant en compte que les résidence de plus de deux étages
13)Donnez les résidences ayant autant d'appartements que l'une des résidences construites en 2007.
14) Le logement 12 de la résidence 16 est acheté le 17/04/2007. Vous devez metre à jour la réservation correspondante (à vous de la déterminer) et annuler toutes les autres réservations en cours sur cet appartement (la date d'achat sera utilisée comme dat d'annulation).
Merci pour votre aide
aude
Exercice En Sql
Débuté par aude62, mar 30 2010 15:14
4 réponses à ce sujet
#1
Posté 30 mars 2010 - 15:14
#2
Posté 30 mars 2010 - 17:47
voici quelque explication qu'il y a avec l'exercice
1) l'identifiant de logement s'explique par le fait qu'au niveau MCD, l'entité logement est une entité faible de résidence
2) la table transaction permet de stocker les réservation et les ventes de logements. toute transaction débute a une date (champ dataD) et se finit a une autre (dateF). elle est conclue par un commercial (NumCo). Elle concerne un client (NumCl) qui s'interesse, au sein d'une même résidence (NumR), à un logement (NumL) et à un parking (NumP). Quatre remarque importantes:
_ une transaction est soir un réservation (le champ etat vaut alors le caractere R) , soit un achat (Etat vaut A)
_on suppose que toute transaction est initialement une réservation (la date ets stockée dans dateF et dateD n'est pas renseignée):
- si le client annule sa réservation, DateF ets renseignée à la date d'annulation et l'occurence de transaction demeure
- si la réservation donne lieu à un achat, Etat passe de R à A et dateF est la date d'achat. En d'autre termes, lorsqu'un achat est effectué, l'occurence de transaction correspondante passe de réservation à achat.
_ comme l'annulation est possible plusieurs réservation peuvent être prises pour un même logement. La réservation la plus ancienne est prioritaire. Si le client annule, la suivante chronologiquement (et non annulée) est alors prise en compte
_ une transaction porte toujours sur un logemebt et parfois sur un parking : si le client en souhaite un, le champ NumP ets renseignée, sinon il ne contient aucune valeur. Une réservation peut porter sur un logement et un parking mais l'achat correspondant ne peut concerner que le logement. NumP ets alors mis à jour.
Voilà j'ai commencer j ai trouver comme réponse:
1) Select NumT
from Transaction
where NumP is null;
pour le 3) je pense a
Select NumCl, NomCl, count(*) as [nbr de transaction]
from client cl, transaction T
where cl.NumCl = T.NumCL
group by NumCl, NomCl
having count(*)
3;
la 6) Select NumR, NumE, count(*) as [nbr d'appart]
from Résidence R, Logement L, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL and
NumR = [Numero residence] and
NumE = [numero Etage];
la 7)
Select NumL, max superficie
from Logement L, Residence R, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL and
NumR = "23",
la 9)
select NumCl, NomCl, count(Etat) as [nbr de transaction]
from Client Cl, Transaction T
where Cl.NumCl = T.NumCl and
etat = "R"
group by NumCl, NomCl
having count(Etat)
5;
la 10)
update Transaction
set Etat = A
NumP is null
where NumCo = "4" and
DateD= #12/02/2007# and
NumP = "17";
la 11)
select NumR, NumCl, count(NumCl) as [nbr de client]
from residence R, Logement L, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL
group by NumR, NumCl
having count (numCl) > 1;
voila c'est ce que j'ai fait pour le moment est ce bon? ou pouvais vous me dire ou je me trompe? et m'aider en me donnant des conseil pour celle que je n'ai pas encore faite
merci d'avance
1) l'identifiant de logement s'explique par le fait qu'au niveau MCD, l'entité logement est une entité faible de résidence
2) la table transaction permet de stocker les réservation et les ventes de logements. toute transaction débute a une date (champ dataD) et se finit a une autre (dateF). elle est conclue par un commercial (NumCo). Elle concerne un client (NumCl) qui s'interesse, au sein d'une même résidence (NumR), à un logement (NumL) et à un parking (NumP). Quatre remarque importantes:
_ une transaction est soir un réservation (le champ etat vaut alors le caractere R) , soit un achat (Etat vaut A)
_on suppose que toute transaction est initialement une réservation (la date ets stockée dans dateF et dateD n'est pas renseignée):
- si le client annule sa réservation, DateF ets renseignée à la date d'annulation et l'occurence de transaction demeure
- si la réservation donne lieu à un achat, Etat passe de R à A et dateF est la date d'achat. En d'autre termes, lorsqu'un achat est effectué, l'occurence de transaction correspondante passe de réservation à achat.
_ comme l'annulation est possible plusieurs réservation peuvent être prises pour un même logement. La réservation la plus ancienne est prioritaire. Si le client annule, la suivante chronologiquement (et non annulée) est alors prise en compte
_ une transaction porte toujours sur un logemebt et parfois sur un parking : si le client en souhaite un, le champ NumP ets renseignée, sinon il ne contient aucune valeur. Une réservation peut porter sur un logement et un parking mais l'achat correspondant ne peut concerner que le logement. NumP ets alors mis à jour.
Voilà j'ai commencer j ai trouver comme réponse:
1) Select NumT
from Transaction
where NumP is null;
pour le 3) je pense a
Select NumCl, NomCl, count(*) as [nbr de transaction]
from client cl, transaction T
where cl.NumCl = T.NumCL
group by NumCl, NomCl
having count(*)
la 6) Select NumR, NumE, count(*) as [nbr d'appart]
from Résidence R, Logement L, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL and
NumR = [Numero residence] and
NumE = [numero Etage];
la 7)
Select NumL, max superficie
from Logement L, Residence R, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL and
NumR = "23",
la 9)
select NumCl, NomCl, count(Etat) as [nbr de transaction]
from Client Cl, Transaction T
where Cl.NumCl = T.NumCl and
etat = "R"
group by NumCl, NomCl
having count(Etat)
la 10)
update Transaction
set Etat = A
NumP is null
where NumCo = "4" and
DateD= #12/02/2007# and
NumP = "17";
la 11)
select NumR, NumCl, count(NumCl) as [nbr de client]
from residence R, Logement L, transaction T
where L.NumR = R.NumR and
T.NumR = R.NumR and
L.NumL = T.NumL
group by NumR, NumCl
having count (numCl) > 1;
voila c'est ce que j'ai fait pour le moment est ce bon? ou pouvais vous me dire ou je me trompe? et m'aider en me donnant des conseil pour celle que je n'ai pas encore faite
merci d'avance
#3
Posté 21 avril 2010 - 12:08
tu respecte pas la regle de validation :pour n tables tu as n-1 jointures
#4
Posté 17 mai 2010 - 14:03
Salut, j'ai besoin d'un peu d'aide aussi sur ce sujet.
#5
Posté 26 mai 2010 - 16:14
moi aussi =(
1 utilisateur(s) li(sen)t ce sujet
0 invité(s) et 1 utilisateur(s) anonyme(s)













