Devoir sql

Manel933 Messages postés 8 Date d'inscription jeudi 15 décembre 2011 Statut Membre Dernière intervention 8 avril 2018 - Modifié le 5 avril 2018 à 15:11
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 - 9 avril 2018 à 16:09
Bonjour,

Je suis en BTS Assistant de gestion PMI-PME. J'ai énormément de mal dans la matière Gestion du système d'information. Ca fait 1 mois que je suis sur un devoir portant sur les bases de données et SQL. Voilà ce que j'ai fais pour l'instant dites moi si c'est bon ou pas et pour les 2 derniers pouvez-vous m'aider svp ? j'ai regardé tous les cours mais en vain.

Donner la liste de tous les stagiaires, classés par ordre alphabétique décroissant
SELECT * 
FROM STAGIAIRE
ORDER BY NomSta DESC


Donner le nom et le prénom des stagiaires domiciliés à Toulon.
SELECT nom, prénom
FROM STAGIAIRE
WHERE Ville_Sta =Toulon


Donner la liste des étudiants qui ont obtenu une note inférieure à 10 en Mathématiques.
SELECT *
FROM ÉTUDIENT
WHERE épreuve = mathématiques AND note<10


Donner la liste des épreuves dont la date se situe entre le 1er mai et le 1er juillet 2016.
SELECT * 
FROM EPREUVE
WHERE date_Ep BETWEEN 01/05/2016 AND 01/07/2016


Donner la somme des coefficients de toutes les matières.
SELECT SUM (Coefficient) 
FROM MATIERE


Donner le nombre total d’épreuves.
SELECT COUNT * 
FROM EPREUVE


Lister les notes du stagiaire DUPOND Romuald en précisant pour chacune d’entre elles le libellé de la matière, le numéro et la date de l’épreuve.

Donner la moyenne des notes de chaque stagiaire en indiquant son nom et son prénom.

4 réponses

miracloss Messages postés 1 Date d'inscription dimanche 8 avril 2018 Statut Membre Dernière intervention 8 avril 2018
8 avril 2018 à 12:58
fait voir comment est structuré ta base de donnée pour qu'on puissent te donner la requête exacte
0
Manel933 Messages postés 8 Date d'inscription jeudi 15 décembre 2011 Statut Membre Dernière intervention 8 avril 2018
Modifié le 8 avril 2018 à 18:44
Désolée, je pensais avoir joint un fichier où tout était indiqué. Voici le MRD :
STAGIAIRE (numSta, nomSta, prénomSta, datenaissSta, rueSta, cpSta, villeSta, numMetier)
METIER (numMetier, libelleMetier)
MATIERE (codeMat, libelleMat, coefMat)
EPREUVE (numEp, dateEp, lieuEp, codeMat#)
NOTATION (numSta#, numEp#, note)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127 > Manel933 Messages postés 8 Date d'inscription jeudi 15 décembre 2011 Statut Membre Dernière intervention 8 avril 2018
8 avril 2018 à 18:51
Dans NOTATION il serait logique que numEp# soit souligné aussi.
0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 344 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
8 avril 2018 à 18:54
Et dans EPREUVE, codeMat# et dans stagiaire numMetier aussi.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127 > jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024
8 avril 2018 à 19:02
"Et dans EPREUVE, codeMat# et dans stagiaire numMetier aussi."
Je ne vois pas l'intérêt de mettre une double clé primaire (souligné) à EPREUVE ou STAGIAIRE.
Par contre pour STAGIAIRE, ce qu'il manquerait à numMetier c'est plutôt le # (clé secondaire)

Dans tous les cas, ça revient à ce que je disais plus tôt, ça n'a clairement pas été testé.
0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 344 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
8 avril 2018 à 19:11

Dans tous les cas, ça revient à ce que je disais plus tôt, ça n'a clairement pas été testé.

C'est clair.
Quand on voit des comparaison de champs textes sans quotes...
comme par exemple :
WHERE Ville_Sta =Toulon

ou encore :
WHERE épreuve = mathématiques

Des accents dans le nom des champs ( à éviter ABSOLUMENT ! )
Des dates en français (à mois qu'il ne soit sous access éventuellement....) (et là aussi sans les quotes...)

@Manel933, comme te l'a indiqué KX ... tu dois absolument te créer la base de données en local sur ton ordi (ou avec la solution proposée par KX, ou en t'installant un mysql avec phpmyadmin (via uwamp, xampp, easyphp, wamp.... )
Soit, si tu l'as... via une bdd Access.

Les écrire de tête... à ton niveau ... ça ne marchera pas.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
8 avril 2018 à 13:28
Bonjour,

De toute évidence tu n'as pas testé tes requêtes, si tu fais ça "de tête" tu ne pourras pas progresser.

Tu peux par exemple télécharger une base de données H2 (dernière version : ici, 1.8 Mo)
Tu auras alors accès à une interface web pour créer tes tables, ajouter des données et tester les requêtes.
Le tout est stocké dans un fichier que tu pourras supprimer une fois tes tests terminés.
0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 656
8 avril 2018 à 20:44
Salut, je ne suis pas bien bon en SGBD, mais à l'instar d'une variable, un champ avec un accent c'est pas (fortement) déconseillé?
0
jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024 344
8 avril 2018 à 20:47
Si et c'est bien ce que j'ai indiqué.
0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 656 > jordane45 Messages postés 38150 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 avril 2024
8 avril 2018 à 20:51
Ha oui pardon, j'ai zappé ce paragraphe => je sors
0
Bonjour ,

Merci pour vos réponses. Je n’ai pas mis les accents sur la copie ;). Et je n’ai pas le temps de tester les requêtes sur un logiciel. On étudie pas de façon approfondie le langage SQL, c’est seulement une approche. Les profs sont très indulgents avec nous car ce n’est pas notre domaine du tout. Du coup c’est très très superficiel. Je suis même plus pointue qu’eux.

Mais du coup dans ce que j’ai fais mis à part les accents c’est bon ou pas ? Et pouvez vous me dire que faire pour les 2 dernières requêtes ? Sinon tempi je rendrai ma copie ainsi car ça me saoul un peu ça fait 1 mois que je suis dessus.

Ps : j’ai lu les cours du prof, j’ai regardé des vidéos, les sites aussi mais je bloque.

Merci :)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 127
9 avril 2018 à 08:52
Bonjour,

"ça fait 1 mois que je suis dessus", "j’ai regardé des vidéos, les sites aussi"
"je n’ai pas le temps de tester les requêtes sur un logiciel"
.
Je ne vois pas où est la logique là dedans... Ça t'aurais pris moins de temps pour tester, tu aurais une certitude de ce qui fonctionne ou pas, et tu aurais probablement mieux compris cette matière.

Mais sinon, il y a des erreurs un peu partout. Prenons la 3è par exemple :
SELECT * FROM ÉTUDIENT WHERE épreuve = mathématiques  AND note<10

C'est quoi un ÉTUDIENT ? Dans ton MRD tu as des STAGIAIRE. Sachant que dans la table STAGIAIRE tu n'as pas de note, c'est une notion qui apparaît dans la table NOTATION, idem pour les mathématiques qui ne sont pas une épreuve, mais une matière dont le nom apparaît dans MATIERE.

En gros dans les requêtes que tu as faites, il te manque toute la partie relationnelle.
À chaque fois tu as tout fait avec une seule table, sans les relier les unes aux autres, alors que c'est le principe des modèles relationnels c'est qu'il faut croiser les données entre elles.

Si je devais corriger juste la 3è ce serait quelque chose comme ça :
SELECT DISTINCT numSta FROM NOTATION, EPREUVE, MATIERE
WHERE NOTATION.numEp = EPREUVE.numEp AND EPREUVE.codeMat = MATIERE.codeMat
AND note < 10 AND libelleMat = 'mathématiques';

Ça n'a pas grand chose à voir avec ce que tu as fait...
0
Pourquoi tant d'animosité ?

- J'ai passé un mois dessus, je ne veux pas perdre plus de temps bien que ta méthode soit très utile.
- EtudiAnt, faute de frappe. Autant pour moi.
- STAGIAIRE au lieu de étudiant j'aurais du mettre, j suis tombée dans le piège de l'énoncé où est mentionné "ETUDIANT" au lieu de STAGIAIRE.

Bref je te remercie tout de même d'avoir pris le temps de me répondre.
0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 656
9 avril 2018 à 16:09
Y'a pas d'animosité, ce que dit KX, c'est que depuis 1 moi, tu aurais eu tout le temps d'installer une base de données, d'y saisir 10 entrées par table et faire tes tests.
C'est plus simple et plus efficace.
0
Rejoignez-nous