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