Soit la base de données "Scol" contenant les tables suivantes:
Etudiant
|
Notes
|
||||||||||||||||||||||||||||||||||||||||||
Module
|
Soit le script suivant:
<?php
$c= mysql_connect ( "localhost","root","") or die ( "erreur 1");
$bdd= mysql_select_db ( "Scol") or die ( "erreur 2");
$req = "Select distinct `Nom` as `R1`, `Note` as `R2`, `Coef` as `R3`
From `Etudiant`, `Notes`, `Module`
Where `Mat` = `Matr` and `CM` = `Code` and `Note` >= '10'
";
$res= mysql_query ( $req ) or die ( "erreur 3");
while ( $i = mysql_fetch_array ( $res ) ) {
$x= $i [ "R1" ];
$y= $i [ "R2" ];
$z= $i [ "R3" ];
echo "$x $y $z <br>"; }
mysql_close ( $c );
?>
Partie 1:
a. Donner les résultats affichés dans le navigateur aprés l'exécution de ce script. Réponse
b. Même question avec la requête suivante :
$req = "Select distinct `Mat` as `R1`, `Nom` as `R2`, sum ( `Note` * `Coef`) / sum ( `Coef` ) as `R3`
From `Etudiant`, `Notes`, `Module`
Where `Mat` = `Matr` and `CM` = `Code` and `Note` >= '10'
Group by `Mat`
"; Réponse
c. Même question que b en ajoutant à la requête, cas par cas :
- Where `Code` <> '13' Réponse
- Having sum ( `Note` ) < '20' Réponse
- Order by `Lib` Réponse
- Where `Note` < '12.00' (au lieu de `Note` >= '10') and `Coef` < '3' et Having sum ( `Note` * `Coef`) / sum ( `Coef` ) < '10' Réponse
Partie 2:
Donnez la requête $req qui affiche :
a. Nom de l'étudiant, libellé du module et la note > 10 correspondante dans un ordre croissant
Ahmed Prog_Web 10
Moussa Prog_Web 11
Ahmed Init_Web 12
Moussa Flash 12
Rachid Prog_Web 13
Réponse :
$req = "select distinct `Nom` as `R1`, `Lib` as `R2`, `Note` as `R3`
from `Etudiant`, `Notes`, `Module`
where `Mat` = `Matr` and `CM` = `Code` and `Note` >= '10.00'
order by `Note`";
b. Le libellé du module, le coefficient, et la moyenne du module dans un ordre décroissant:
Prog_Web 2 11.33
Init_Web 1 9.66
Flash 3 9
Réponse :
$req = "select distinct `Lib` as `R1`, `Coef` as `R2`, sum ( `Note` * `Coef` ) / sum ( `Coef` ) as `R3`
from `Notes`, `Module`
where `CM` = `Code`
group by `Code` order by sum ( `Note` * `Coef` ) / sum ( `Coef` ) desc";
Partie 3:
Donner les instructions à ajouter au script pour placer dans le champ Chp de la table Etudiant :
a. la moyenne de chaque étudiant.
Réponse :
1- La requête devient :
$req = select distinct `Mat` as `R1`, `Nom` as `R2`, sum ( `Note` * `Coef` ) / sum ( `Coef` ) as `R3`
from `Etudiant`, `Notes`, `Module`
where `Mat` = `Matr` and `CM` = `Code`
group by `Mat` ";
2- Ajouter dans la boucle :
$req2="update `Etudiant` set `Chp`='$z' where `Mat`='$x'";
$res2= mysql_query ( $req2, $c ) or die ( mysql_error() );
b. le classement ( l'ordre de mérite ) par ordre croissant des moyennes des étudiants
Réponse :
1- La requête devient :
$req = "select distinct `Mat` as `R1`, `Nom` as `R2`
from `Etudiant`, `Notes`, `Module`
where `Mat` = `Matr` and `CM` = `Code`
group by `Mat`
order by sum ( `Note` * `Coef` ) / sum ( `Coef` ) desc";
2- La boucle devient :
$cpt= 1;
while ( $i = mysql_fetch_array ( $res ) ) {
$x= $i [ "R1" ];
$y= $i [ "R2" ];
$req2="update `Etudiant` set `Chp`='$cpt' where `Mat`='$x'";
$res2= mysql_query ( $req2, $c ) or die ( mysql_error() );
echo "$x $y $cpt <br>";
$cpt++;
}
Aller à la liste des exercices