Examen 2017-2018 & Solution prototype
Programmation Web

Soit la base de données "emd1718" accessible via l'adresse FTP @adresse avec le nom d'utilisateur "U" et le mot de passe "PW". L'onglet Concepteur de la page Administration MySQL du serveur nous donne le schéma conceptuel suivant :

bdd

Les enregistrements contenus dans chaque table sont :
Table1
Table3

Table2

Partie 1 ( 4 points) :

Donner le script PHP qui permet de créer la base de données, de créer les tables et d'ajouter les enregistrements ci-dessus dans les tables respectives.

Solution

Partie 2 ( 6 points):

Donner le script PHP contenant une requête SQL (sans fonctions d'agrégats) permettant d'afficher les résultats ci-dessous :

 

a. b. c. d.
Solution Solution Solution Solution

Remarque : Donnez le script complet pour la question (a), et juste la requête pour les autres questions.

Partie 3 ( 6 points):

2. Donner le résultat affiché avec chacune des requêtes suivantes :

a. SELECT `table3`.`Num1` as `X`, sum(`table2`.`Champ3` * `table3`.`Champ4`) as `Y`
FROM `table1`, `table3`, `table2`
Where `table1`.`Num1`= `table3`.`Num1` AND `table2`.`Num2`=`table3`.`Num2`
and `table1`.`Date1` >= '2018-01-10' and `table1`.`Date1` <= '2018-01-13'
group by `table3`.`Num1`
Consulter le script
b. SELECT `table3`.`Num1` as `X`, avg(`table2`.`Champ3` * `table3`.`Champ4`) as `Y`
FROM `table1`, `table3`, `table2`
Where `table1`.`Num1`= `table3`.`Num1` AND `table2`.`Num2`=`table3`.`Num2`
group by `table3`.`Num1`
having `Y` <= '15000'
order by `Y`
Consulter le script
c. SELECT distinct `table3`.`Num1` as `X`, count(`table3`.`Champ4`) as `Y`
FROM `table1`, `table3`, `table2`
Where `table1`.`Num1`= `table3`.`Num1` AND `table2`.`Num2`=`table3`.`Num2`
group by `table3`.`Num2`
having `Y` <= '2'
order by `Y`
Consulter le script

Solution :

a. b. c.

Partie 4 ( 4 points):

Donner le script PHP qui permet de transférer le résultat de la requête suivante dans un fichier Texte nommé Liste.txt.

SELECT distinct `table3`.`Num1` as `X`, sum(`table3`.`Champ4`* '1.618') as `Y`
FROM `table1`, `table3`, `table2`
Where `table1`.`Num1`= `table3`.`Num1` AND `table2`.`Num2`=`table3`.`Num2`
group by `table3`.`Num2`
order by `Y` DESC";

Solution