Exercice SQL
husskar
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -
ghuysmans99 Messages postés 2496 Date d'inscription Statut Contributeur Dernière intervention -

voici mon travail j'attend votre correction
Requête 1:
select * from etudiant order by nomEtu;
Requête 2:
SELECT Numetu, Nometu FROM ETUDIANT WHERE Numetu NOT IN (SELECT Numetu FROM NOTES N, MATIERE M WHERE N.Numat=M.Numat AND Nomat='algorithmique'');
Requête 3:
j'ai pas bien compris la requete
Requête 4:
SELECT Numens, Grade, Ancien FROM ENSEIGNANT E, MATIERE M WHERE E.Numens=M.Numens HAVING COUNT(Numens)>1;
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Exercice SQL
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Traitement d'exercice - Forum Bureautique
- Fleur d'encre 5eme corrigé exercice ✓ - Forum PDF
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
2 réponses
Bonjour !
1. OK
2. OK
3.
4.OK
Bon code ^^
Luc
Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques sont finies...
1. OK
2. OK
3.
SELECT (e.NOMETU, e.NUMETU, m.NOMMAT, AVG(n.NOTE) FROM ETUDIANT e INNER JOIN NOTES n ON n.NUMETU# = e.NUMETU INNER JOIN MATIERE m ON m.NUMMAT = n.NUMMAT# GROUP BY e.NOMETU, e.NUMETU, m.NOMMAT
4.OK
Bon code ^^
Luc
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques sont finies...
merci Luc
dans la quatrième requête est ce que il faut utilisé group by avec having où seulement having
dans la quatrième requête est ce que il faut utilisé group by avec having où seulement having
J'ai testé plus simple dans Access (attention c'est NomEns qui est demandé, pas son numéro de matricule !) :
En règle générale, tout ce qui se trouve juste après le SELECT doit se retrouver dans le GROUP BY. Si tu ne mets pas cette dernière clause, ça fonctionnera si tu n'as qu'un COUNT dans ce que tu sélectionnes. Sinon le SGBD va se plaindre du fait que les autres champs sélectionnés ne se retrouvent pas dans les champs agrégés (GROUP BY).
Synthétiquement, cette clause fonctionne comme suit : elle trie le résultat intermédiaire (où le WHERE a déjà été vérifié) selon ce que tu as donné (disons des noms de champs) et dès qu'une de ces valeurs change par rapport à la ligne précédente (ou qu'elle arrive à la fin), elle produit une ligne de résultat (en faisant les COUNT, MAX et autres fonctions d'agrégat) à condition que la condition après le HAVING l'y autorise.
Dans notre cas, on se permet de regrouper par NomMat et dès qu'on passe à un autre prof, on compte le nombre de NumMat (pas forcément différents même si dans nos résultats ce sera toujours le cas, vu qu'une matière ne peut pas être liée à deux professeurs différents) pour vérifier que ça dépasse bien 1. Si c'est le cas, on a trouvé un professeur qui donne au moins deux cours.
SELECT NomEns FROM ENSEIGNANT E, MATIERE M
WHERE E.Numens=M.Numens
GROUP BY NomEns
HAVING COUNT(NumMat)>1;
En règle générale, tout ce qui se trouve juste après le SELECT doit se retrouver dans le GROUP BY. Si tu ne mets pas cette dernière clause, ça fonctionnera si tu n'as qu'un COUNT dans ce que tu sélectionnes. Sinon le SGBD va se plaindre du fait que les autres champs sélectionnés ne se retrouvent pas dans les champs agrégés (GROUP BY).
Synthétiquement, cette clause fonctionne comme suit : elle trie le résultat intermédiaire (où le WHERE a déjà été vérifié) selon ce que tu as donné (disons des noms de champs) et dès qu'une de ces valeurs change par rapport à la ligne précédente (ou qu'elle arrive à la fin), elle produit une ligne de résultat (en faisant les COUNT, MAX et autres fonctions d'agrégat) à condition que la condition après le HAVING l'y autorise.
Dans notre cas, on se permet de regrouper par NomMat et dès qu'on passe à un autre prof, on compte le nombre de NumMat (pas forcément différents même si dans nos résultats ce sera toujours le cas, vu qu'une matière ne peut pas être liée à deux professeurs différents) pour vérifier que ça dépasse bien 1. Si c'est le cas, on a trouvé un professeur qui donne au moins deux cours.