Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2005, 21h02   #1
Membre du Club
 
Inscription : novembre 2004
Messages : 132
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 132
Points : 44
Points : 44
Envoyer un message via MSN à red210
Par défaut BTS Info de Gestion passé aujourd'hui question pour SQL

Bonjour à tous,

J'ai passé aujourd'hui le BTS épreuve étude de cas option DA et j'aimerai savoir si les requêtes que j'ai réalisé sont bonne, par simple curiosité ^^

Merci à tous ceux qui pourront me répondre, d'avance merci

Voici le sujet : http://www.sidem.ch/bts.jpg

et voici mes requetes :

a)
Code :
1
2
 
SELECT NumProjet, Désignation FROM ProjetTerminé WHERE (ChargeRéelle/ChargeEstimé)>1,25;
b)
Code :
1
2
3
4
 
SELECT Libellé, AVERAGE(ChargeRéelle) FROM ProjetTerminé, TypeProjet
WHERE ProjetTerminé.CodeType=TypeProjet.CodeType
GROUP BY Libellé;
c)
Code :
1
2
3
4
5
 
SELECT LiberServ FROM Service WHERE CodService IN
(SELECT CodeService FROM Personnel WHERE Matricule IN
(SELECT DISTINCT Matricule FROM ParticipeProjet))
ORDER BY LibServ ASC;
d)
Code :
1
2
3
4
 
SELECT Matricule, NomPers FROM Personne, ParticipeProjet WHERE 
NumProjet="756" AND
NbJours IN (SELECT MAX(NbJours) FROM PartcipeProjet
red210 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 01h34   #2
Membre habitué
 
Avatar de Xavinou
 
Inscription : mai 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 135
Points : 133
Points : 133
J'ai l'impression que la d) est fausse car tu compares le nombre de jour du projet "756" au max du nombre de jour de tous les projets... ça ne peut marcher que si le projet "756" est celui où il y a le plus de jour ? En plus il faut écrire le prédicat de jointure entre Personne et ParticipeProjet.
J'aurais plutôt mis :
Code :
1
2
3
4
5
SELECT Matricule, NomPers FROM Personne, ParticipeProjet 
WHERE
Personne.Matricule = ParticipeProjet.Matricule AND
NumProjet="756" AND
NbJours IN (SELECT MAX(NbJours) FROM PartcipeProjet WHERE NumProjet="756")
Sinon le reste a l'air bon.
Xavinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 10h11   #3
Membre du Club
 
Inscription : novembre 2004
Messages : 132
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 132
Points : 44
Points : 44
Envoyer un message via MSN à red210
Arf effectivement je me suis un peu trop précipité sur la dernière requêtes, c'est vrai que c'est totalement faux ce que je fais...

Je te remercie de m'avoir conscaré du temps , a bientot
red210 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 15h00   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Pour ma part je noterais zéro ces réponse... Mais comme zéro il faut le justifier, je donnerais 1...

Alors on corrige :

a)
Code :
1
2
3
4
5
6
7
8
 
SELECT NumProjet, Désignation FROM ProjetTerminé WHERE (ChargeRéelle/ChargeEstimé)>1,25; 
 
Mauvais ! Solution :
 
SELECT NumProjet, Désignation 
FROM   ProjetTerminé 
WHERE  (CAST(ChargeRéelle AS FLOAT) / CAST(ChargeEstimé AS FLOAT) > 1.25;
3 fautes : les deux transtypages ont été oublié, la division sera donc une division entière (pas de virgule). Le séparateur décimal est le point, pas la virgule. Cette requête n'aurait donc pas dépassé le stade de la compilation (erreur de syntaxe)


b)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
SELECT Libellé, AVERAGE(ChargeRéelle) FROM ProjetTerminé, TypeProjet
WHERE ProjetTerminé.CodeType=TypeProjet.CodeType
GROUP BY Libellé;
 
Peu élégant ! Solution :
 
SELECT Libellé, AVERAGE(ChargeRéelle) 
FROM   ProjetTerminé PT
       INNER JOIN TypeProjetTP
             ON PT.CodeType = TP.CodeType
GROUP BY Libellé
Les jointures ne se font pas dans le WHERE, mais dans la clause JOIN avec le prédicat ON

c)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT LiberServ FROM Service WHERE CodService IN
(SELECT CodeService FROM Personnel WHERE Matricule IN
(SELECT DISTINCT Matricule FROM ParticipeProjet))
ORDER BY LibServ ASC;
 
Peu élégant ! Solution :
 
SELECT LiberServ 
FROM   Service S
       INNER JOIN Personnel P
             ON S.CodService = P.CodService
       INNER JOIN ParticipeProjet PP
             ON P.Matricule = PP.Matricule
ORDER BY LibServ
Eviter le IN lorsque la jointure est possible.


d)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
SELECT Matricule, NomPers 
FROM Personne, ParticipeProjet 
WHERE NumProjet="756" 
  AND NbJours IN (SELECT MAX(NbJours) 
                  FROM PartcipeProjet 
 
Mauvais ! Solution :
 
avec correlation :
 
SELECT P.Matricule, NomPers
FROM   Personnel P
       INNER JOIN ParticipeProjet PP
             ON P.Matricule = PP.Matricule
WHERE  NumProjet = 756
  AND  NbJours = (SELECT MAX(NbJours) 
                  FROM   ParticipeProjet
                  WHERE  NumProjet = PP.NumProjet)
 
sans corrélation :
 
SELECT P.Matricule, NomPers
FROM   Personnel P
       INNER JOIN ParticipeProjet PP
             ON P.Matricule = PP.Matricule
WHERE  NumProjet = 756
  AND  NbJours = (SELECT MAX(NbJours) 
                  FROM   ParticipeProjet
                  WHERE  NumProjet = 756)
1) parenthèse finale oubliée
2) une valeur numérique n'est ni entre guillement ni entre apostrophe (756)
3) il manque la restriction de la sous requête sur le projet considéré
4) les jointures se font à l'aide du prédicat JOIN


Moralité, je prédit que tu vas avoir entre 12 et 14... Et que l'on ferait bien d'apprendre au prof le langage SQL.

A l'occasion donne moi ton adresse sur ce forum je t'enverrais mon dernier bouquin sur le sujet !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2005, 21h48   #5
Membre habitué
 
Avatar de Xavinou
 
Inscription : mai 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 135
Points : 133
Points : 133
Moi je serais quand même moins sévère
Pour un BTS on va pas te demander de faire de l'optimisation de requête ! Peut importe comment tu exprime tes jointures, du moment que cela fonctionne.

Concernant la syntaxe, le correcteur n'est pas un compilateur, donc c'est surtout l'esprit de la solution qu'il va prendre en compte...
Par exemple, que tu mettes = "756" ou 756 c'est un peu pareil, surtout que dans le schéma donné il n'y a pas les types des colonnes (où alors je l'avais lu trop vite !)
Concernant les fonctions de CAST, est ce que c'est normalisé dans SQL ou bien c'est spécifique à certains SGBD ? D'ailleurs le sujet ne dit pas non plus quel SGBD est utilisé...

Bref, ça serait pas sympa de vous noter sur la syntaxe
Xavinou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2005, 18h32   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
SQL est un langage qui plus est normalisé. Un langage c'est une combinaison de syntaxes. Un exercice SQL c'est exprimer une solution à l'aide d'une syntaxe...

COALESCE est normalisé depuis 1992 !

A lire : http://sqlpro.developpez.com/cours/null/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2005, 14h06   #7
Membre Expert
 
Inscription : mars 2005
Messages : 1 565
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2005
Messages : 1 565
Points : 2 178
Points : 2 178
Personnellement j'adore la rigueur d'SQLpro, tu voudrais pas un fils adoptif ?
vmolines est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2005, 14h18   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Là c'est une épreuve étude de cas alors on peut espérer que le correcteur ne sera pas trop regardant de la syntaxe. Mais c'est essentiel de corriger les erreurs sur le forum pour éviter que des membres prennent l'exemples comme régles alors qu'il est faux
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2005, 01h24   #9
Membre du Club
 
Inscription : septembre 2004
Messages : 74
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 74
Points : 51
Points : 51
Citation:
Envoyé par SQLpro

A l'occasion donne moi ton adresse sur ce forum je t'enverrais mon dernier bouquin sur le sujet !
Vous etes ecrivant specialise en informatique ? Par curiosite vous envoyez vos bouquins a tout le monde ?
SILVER600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2005, 12h20   #10
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Non ! Uniquement à ceux je j'assassine publiquement et pour qu'ils puissent apprendre enfin SQL !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2005, 18h32   #11
Membre du Club
 
Inscription : septembre 2004
Messages : 74
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 74
Points : 51
Points : 51
Citation:
Envoyé par SQLpro
Non ! Uniquement à ceux je j'assassine publiquement et pour qu'ils puissent apprendre enfin SQL !

A +
Ah donc dans un sens j'ai de la chance je suppose . Sinon vous connaissez bien DB2 UDB d'IBM s'il vous plait ?
SILVER600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2005, 14h48   #12
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 793
Points : 17 793
Assez, j'ai fait quelques missions sur ce SGBDR. Au niveau SQL, c'est le plus normatif de tous. Au niveau facilité de dev, c'est pas terrible car l'interface Java est comme sous Oracle, hyper lente.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h34.


 
 
 
 
Partenaires

Hébergement Web