Aide exos (simple) [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 17-05-2016 à 11:48:23
On va commencer par le début
Tes réponses aux questions 1 et 2 me semblent bien.
Question 3 : Tu peux reprendre ta requête de la question 2 en utilisant l'attribut "GROUP BY" (je te laisse chercher sur le net la syntaxe exacte histoire de pas tout te donner non plus )
Question 4 : une requête assez simple, la difficulté est qu'il y a deux conditions à remplir; tu peux utiliser le mot-clé "AND" pour ça.
Réfléchis déjà à ces deux-là, on verra après pour la suite
Marsh Posté le 17-05-2016 à 12:39:05
merci beaucoup Zerist de prendre le temps de me répondre
j'ai répondu à la question 3 et je réfléchis pour la 4 en espérant répondre cet après midi
Merci encore !
Marsh Posté le 17-05-2016 à 13:25:27
La 1 est fausse : pour avoir un ordre alphabétique, il faut aussi le faire sur le prénom : ORDER BY NomComedien, PnomComedien
Marsh Posté le 17-05-2016 à 13:29:45
antac a écrit : La 1 est fausse : pour avoir un ordre alphabétique, il faut aussi le faire sur le prénom : ORDER BY NomComedien, PnomComedien |
Exact, bien vu
Marsh Posté le 17-05-2016 à 13:31:47
merci antac et zerist j'ai corrigé, effectivement si deux comédiens ont le même nom cela ne fonctionnait pas
Marsh Posté le 17-05-2016 à 14:10:18
Allez, je donne la 4 parce-que je suis gentil
Code :
|
Ca devrait te donner des éléments de réponses pour les autres.
La 11 est fausse
Marsh Posté le 17-05-2016 à 15:50:12
Tu ne fais pas les jointures entre les différentes tables dans la question 5... La réponse serait quelque chose comme :
Code :
|
Marsh Posté le 17-05-2016 à 16:10:31
zerist a écrit : Tu ne fais pas les jointures entre les différentes tables dans la question 5... La réponse serait quelque chose comme :
|
j'étais en train de reposter une autre réponse en ayant relu ta précédente réponse, je regarde merci
SELECT NomAuteur
FROM auteur INNER JOIN Piece
ON auteur.NumPiece=Piece.NumPiece
INNER JOIN Ecrire ON
Ecrire.NumPiece=Comedien.NumComedien
INNER JOIN Calendrier ON
Piece.NumPiece=Calendrier.DateRepresentation
WHERE DateRepresentation between "2002-12-01" and "2002-12-31"
Marsh Posté le 17-05-2016 à 16:15:37
Tu n'as pas besoin créer une table "ecrire" pour représenter le lien entre pièce et auteur. En effet, cette relation a une cardinalité 1:1 dans le sens pièce->auteur, elle peut donc simplement être représentée par une clé étrangère "numAuteur" dans la table piece.
Marsh Posté le 17-05-2016 à 16:26:50
En essayant de lancer la requête que tu indique dans MySQL Workbench, j'ai l'erreur suivante Error Code: 1054. Unknown column 'piece.NumAuteur' in 'on clause'
, je précise que le schéma n'a pas été crée par un script mais j'ai due créer les tables une a une à la main. Je ne vois pas l'erreur
Sinon pour la question 6 et 7, cela te semble bon ?
merci encore pour le temps passé et ta réactivité
Marsh Posté le 17-05-2016 à 16:32:50
Si c'est ça, c'est que tu as oublié de mettre la colonne NumAuteur dans la table piece.
Est-ce que tu connais la 3ème forme normale. Sais tu ce que c'est qu'un Modèle Relationnel des Données ?
Marsh Posté le 17-05-2016 à 16:34:38
C'est que au moment ou tu as créé tes tables, tu n'as pas créé la clé étrangère représentant le lien "écrire".
Cela se crée de cette façon :
Code :
|
Tes réponses aux questions 6 et 7 me semblent correctes.
Marsh Posté le 17-05-2016 à 16:51:17
antac a écrit : Si c'est ça, c'est que tu as oublié de mettre la colonne NumAuteur dans la table piece. |
Dans le sujet je ne vois pas de colonne NumAuteur dans la table piece, y a t'il une explication à cela ?
Sinon dans le cours que j'ai, on n'en parle pas des formes normales..
J'ai juste ceci sur les standard, intro est assez basique
Les grandes dates de la normalisation du SQL sont :
1986 Normalisation ANSI
1987 Normalisation ISO de SQL 1
1992 Normalisation ISO de SQL 2
1999 Normalisation ISO de SQL 3.
2003 Normalisation ISO de SQL 2003
2008 Normalisation ISO de SQL 2008
Le SQL est composé de 3 sous-ensembles :
Le Langage de Description des Données LDD
Le Langage de Manipulation des Données LMD
Le Langage de Contrôle des Données LCD
Puis ca commence direct sur la création de table et les commandes SELECT etc...
j'ai trouvé des infos intéressantes sur wikipedia à propos de 3ème forme normale
Marsh Posté le 17-05-2016 à 17:09:03
zerist a écrit : C'est que au moment ou tu as créé tes tables, tu n'as pas créé la clé étrangère représentant le lien "écrire".
|
J'obtiens une erreur, un truc doit clocher dans ma base... Error Code: 1215. Cannot add foreign key constraint
Marsh Posté le 17-05-2016 à 17:16:08
Pour en revenir aux réponses 4 et 5, je viens de revoir dans mon cours cet extrait? Le prof attend donc une forme plus simple, je vais essayer de transformer les deux requêtes.
3. LES JOINTURES.
Lorsque les informations se trouvent dans plusieurs tables, il faut faire une « jointure » sur ces tables.
Il existe des clauses spécifiques pour faire les jointures « INNER JOIN, OUTER JOIN, etc… » qui seront traitées dans un autre cours. Dans cette initiation au SQL nous traiterons les jointures comme une condition particulière que nous placerons dans le WHERE.
SELECT <…>
FROM <nom table 1>, <nom table 2>
WHERE < nom table 1>.<nom champ> = < nom table 2>.<nom champ> ;
Marsh Posté le 17-05-2016 à 17:27:22
Rim3000 a écrit : |
C'est normal que tu ne l'as pas...
Tu as une relation 1,n <-> 1,1, la clé primaire de la table ayant 1,n va vers la table ayant la liaison 1,1
http://stephanie.laporte.pagespers [...] eMCDMR.pdf
Marsh Posté le 17-05-2016 à 17:46:19
Citation : C'est normal que tu ne l'as pas... |
Super explication, je pense avoir compris
Marsh Posté le 15-05-2016 à 18:58:54
*******Un grand merci a zerist et antac pour leur patience et leur aide, le corrigé définitif est dans le sujet de ce premier commentaire******
Salut les amis,
Voila dans le cadre de mes études (M2 Marketing), on a une matière qui requiert des connaissances de base de données relationnelle .., j'ai donc un exercice à faire mais comme c'est pas mon domaine (du tout) je ne sais pas si j'ai bon...
Quelqu'un peut m'aider et m'orienter SVP ?
Je poste ce que j'ai fait jusque présent et alimenterai au fur et à mesure que j'avance.
Voici le sujet et mes réponses en gras. MERCI d'avance pour toute l'aide apportée
Répondre aux questions suivantes :
1. La liste des comédiens, par ordre alphabétique, habitant le Gard (30) ?
select nomcomedien, pnomcomedien
from comedien
where cpcomedien like "30%"
order by nomcomedien;
2. Le nombre de comédiens ?
select count(*) as "nb de comédiens"
from comedien;
3. Le nombre de comédiens par ville ?
select villecomedien, count(*) as "nb de comédiens"
from comedien
group by villecomedien;
4. Les comédiens appartenant à une catégorie avec un coût horaire supérieur à 100€ jouant dans la pièce « Le père Noël est … » ?
Select Co.NumComedien, NomComedien, PnomComedien
From Comedien Co, Categorie Ca, Piece P, Jouer J
Where Co.NumComedien=J.NumComedien
and J.NumPiece=P.NumPiece
and Co.CodeCategorie=Ca.CodeCategorie
and NomPiece like "Le père Noël est %"
and CoutHoraireCategorie>100;
5. Les auteurs des pièces jouées pendant le mois de décembre 2002 ?
Select A.NumAuteur, NomAuteur
From Auteur A, Piece P, Calendrier C, Representation R
Where daterepresentation between "2002-12-01" and "2002-12-31"
and R.NumRepresentation=C.NumRepresentation
and C.NumPiece=P.NumPiece
and P.NumAuteur = A.NumAuteur;
6. Les villes dans lesquelles il y a des comédiens ?
Select distinct villecomedien from comedien;
7. La durée moyenne des pièces ?
select avg(DureePiece)
from piece
8. Les pièces jouées par « comédien2 » dans lesquelles il a tenu un rôle de type : « principal » ?
select p.numpiece, nompiece
from piece p, jouer j, comedien c
where nomcomedien="comedien2"
and TypeDeRole="principal"
and p.NumPiece=j.NumPiece
and j.NumComedien=c.NumComedien
9. Les pièces dont le prix d’entrée est compris entre 15€ et 50€ ?
select numpiece, nompiece
from piece
where TarifEntreePiece between 15 and 50
10. Le nombre de comédien par type de rôle dans la pièce « le père Noël est …. » ?
select typederole, count(*)
from jouer j, piece p
where j.numpiece=p.numpiece
and nompiece like "le père Noël est %"
group by typederole
11. Les catégories de comédien dont le coût horaire est supérieur à la moyenne ?
select CodeCategorie, CoutHoraireCategorie
from categorie
where CoutHoraireCategorie >
(select avg(CoutHoraireCategorie) from categorie)
12. Les comédiens qui appartiennent à une catégorie dont le coût horaire est supérieur à la moyenne ?
select NumComedien,NomComedien,PnomComedien, CoutHoraireCategorie
from comedien co, categorie ca
where co.codecategorie=ca.CodeCategorie
and CoutHoraireCategorie >
(select avg(CoutHoraireCategorie) from categorie)
13. La pièce la plus chère ?
select NumPiece, NomPiece, TarifEntreePiece
from piece
where TarifEntreePiece =
(select max(TarifEntreePiece) from piece)
Message édité par Rim3000 le 08-06-2016 à 19:14:34