Une requête compliquée pour rien ?
Le
TigrouMeow
Bonjour,
J'ai eu un exam de SQL, et dans le corrigé la requète me parait plus
complexe qu'elle ne pourrait l'être. Je voudrais qu'on m'explique la
différence entre la mienne et celle du corrigée
Je pense pas que ça soit nécessaire de vous fournir le MLD vu
que la structure de la base est assez simple, vous devriez pas avoir
de problème à voir la réelle différence :)
Voici celle du corrigée :
select e.identif, nom
from etudiants e, est_affecter ea, matieres m, peut_assurer pa, professeurs
p
where e.identif = ea.identif and ea.code_mat = m.code_mat
and m.code_mat = pa.code_mat and pa.code_prof = p.code_prof
and p.code_prof = (select code_prof from professeurs where prenom_prof like
'j%');
Voici la mienne :
SELECT etudiants.identif, etudiants.nom
FROM etudiants, est_affecter, peut_assurer, professeurs
WHERE etudiants.identif = est_affecter.identif
AND est_affecter.code_mat = peut_assurer.code_mat
AND peut_assurer.code_prof = professeurs.code_prof
AND professeurs.nom_prof LIKE 'j%';
Ca fait quand même une requête de moins, une table de moins et une
condition de moins, pourtant le résultat est le même non ? Peut-être y'a
t-il un risque dans la mienne ?
Bref il doit bien y avoir une raison pour compliquer cette requète,
merci de m'éclaircir là dessus :)
--
Meow ;o)
--
Meow ;o)
J'ai eu un exam de SQL, et dans le corrigé la requète me parait plus
complexe qu'elle ne pourrait l'être. Je voudrais qu'on m'explique la
différence entre la mienne et celle du corrigée
Je pense pas que ça soit nécessaire de vous fournir le MLD vu
que la structure de la base est assez simple, vous devriez pas avoir
de problème à voir la réelle différence :)
Voici celle du corrigée :
select e.identif, nom
from etudiants e, est_affecter ea, matieres m, peut_assurer pa, professeurs
p
where e.identif = ea.identif and ea.code_mat = m.code_mat
and m.code_mat = pa.code_mat and pa.code_prof = p.code_prof
and p.code_prof = (select code_prof from professeurs where prenom_prof like
'j%');
Voici la mienne :
SELECT etudiants.identif, etudiants.nom
FROM etudiants, est_affecter, peut_assurer, professeurs
WHERE etudiants.identif = est_affecter.identif
AND est_affecter.code_mat = peut_assurer.code_mat
AND peut_assurer.code_prof = professeurs.code_prof
AND professeurs.nom_prof LIKE 'j%';
Ca fait quand même une requête de moins, une table de moins et une
condition de moins, pourtant le résultat est le même non ? Peut-être y'a
t-il un risque dans la mienne ?
Bref il doit bien y avoir une raison pour compliquer cette requète,
merci de m'éclaircir là dessus :)
--
Meow ;o)
--
Meow ;o)

Poser une question


est de l'ajout de la table « matieres ». Il s'agit là d'une erreur très
fréquente que d'ailleurs il m'arrive de faire moi-même, par distraction,
dans les requêtes complexes.
Il a toutefois raison pour ce qui est du remplacement de la sous-requête sur
code_prof: votre code ne fonctionnera pas s'il y a plusieurs professeurs qui
correspondent au critère « like 'j%' ».
S. L.
"TigrouMeow" news:423c4bcc$0$22779$
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
De plus, pour compléter la syntaxe SQL a utiliser pour des jointures entre
tables est plutôt comme ceci :
SELECT etudiants.identif, etudiants.nom
FROM etudiants
INNER JOIN est_affecter ON etudiants.identif = est_affecter.identif
INNER JOIN peut_assurer ON est_affecter.code_mat = peut_assurer.code_mat
INNER JOIN professeurs ON peut_assurer.code_prof = professeurs.code_prof
WHERE professeurs.nom_prof LIKE 'j%';
Attention la claus LIKE peut être relativement consommatrice (mais bon
lorsque l'on ne peut pas faire autrement, on s'en contente !!! :-) )
----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France
"TigrouMeow" news:423c5abb$0$16915$
y'a
jointures dans le WHERE !
Cette syntaxe a été bannie à partir de la norme de 1992 qui précise les INNER et
OUTER join entre autres. Cela fait donc plus de 13 ans...
Quel âge à votre prof ? Est-il a ce point gâteux que dans les années 90 il n'a
pas réussit à se mettre à niveau ?
Je suis vivement intéressé de connaître l'établissement que vous fréquentez à
défaut du nom du prof, ce qui pourrait passer pour une délation.
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
TigrouMeow a écrit:
S. L.
"Fred BROUARD" news: