Bonjour,
J'ouvre ce sujet pour vérifier les tables SQL et optimiser, si c'est possible, les requêtes SQL.
Ci-dessous, les:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE
test_site_utilisateur
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CREATE TABLE IF NOT EXISTS `test_site_utilisateur` ( `id_utilisateur` int(11) NOT NULL AUTO_INCREMENT, `nom_etablissement_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `nom_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `prenom_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `date_naissance_utilisateur` date NOT NULL, `civilite_utilisateur` varchar(12) CHARACTER SET utf8 NOT NULL, `sexe_utilisateur` varchar(8) CHARACTER SET utf8 NOT NULL, `acces_utilisateur` int(11) NOT NULL DEFAULT '5', `email_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `pseudo_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `password_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `code_postal_etablissement_utilisateur` varchar(5) CHARACTER SET utf8 NOT NULL, `classe_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `matiereenseignee_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `ville_etablissement_utilisateur` varchar(255) CHARACTER SET utf8 NOT NULL, `date_inscription_utilisateur` datetime NOT NULL, `date_derniere_connexion_utilisateur` datetime NOT NULL, `date_creation_classe_utilisateur` datetime NOT NULL, PRIMARY KEY (`id_utilisateur`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
test_site_relation_cours_tp_utilisateur (table relationnelle)
test_site_cours_tp :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE IF NOT EXISTS `test_site_relation_cours_tp_utilisateur` ( `id_rel_cours_user` int(11) NOT NULL AUTO_INCREMENT, `id_cours_tp` int(11) NOT NULL, `id_utilisateur` int(11) NOT NULL, PRIMARY KEY (`id_rel_cours_user`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE IF NOT EXISTS `test_site_cours_tp` ( `id_cours_tp` int(11) NOT NULL AUTO_INCREMENT, `date_depot_cours_tp` datetime NOT NULL, `date_cloture_validation_cours_tp` datetime NOT NULL, `titre_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL, `contenu_cours_tp` longtext CHARACTER SET utf8 NOT NULL, `type_devoir_cours_tp` int(11) NOT NULL DEFAULT '1', `matiere_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL, `nom_auteur_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL, `classe_cours_tp` varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id_cours_tp`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
Ci-dessous, les requêtes SQL :
-De la page qui liste les cours :
// Récupération de l'identifiant connecté dans la base de données
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT id_utilisateur FROM test_site_utilisateur WHERE id_utilisateur=xxxx
// Sélectionnement du bon Cours/TP (avec son identifiant) de l'élève dans la base de données
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT DISTINCT(t3.id_cours_tp), t3.titre_cours_tp, t3.matiere_cours_tp, t3.classe_cours_tp, t3.date_depot_cours_tp, t3.contenu_cours_tp, t3.nom_auteur_cours_tp, t3.type_devoir_cours_tp, t3.date_cloture_validation_cours_tp FROM test_site_relation_cours_tp_utilisateur t2 LEFT JOIN test_site_cours_tp t3 ON t2.id_cours_tp = t3.id_cours_tp WHERE t2.id_utilisateur=".$_SESSION['id_utilisateur']." AND t3.type_devoir_cours_tp='1' ORDER BY date_cloture_validation_cours_tp
-De la page qui affiche un cours :
// Sélectionnement de l'identifiant de l'élève connecté
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT id_utilisateur FROM test_site_utilisateur WHERE id_utilisateur=".$_SESSION['id_utilisateur']." AND (acces_utilisateur='1' OR acces_utilisateur='5')
// Sélectionnement du bon Cours/TP
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT DISTINCT(date_depot_cours_tp),titre_cours_tp,contenu_cours_tp,matiere_cours_tp,nom_auteur_cours_tp,classe_cours_tp FROM test_site_cours_tp,test_site_utilisateur WHERE id_utilisateur=".$_SESSION['id_utilisateur']." AND type_devoir_cours_tp='1' AND (acces_utilisateur='1' OR acces_utilisateur='5') AND id_cours_tp='$id_cours_tp';
A mon avis la requête SQL suivante :
Sélectionnement du bon Cours/TP (avec son identifiant) de l'élève dans la base de données
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT DISTINCT(t3.id_cours_tp), t3.titre_cours_tp, t3.matiere_cours_tp, t3.classe_cours_tp, t3.date_depot_cours_tp, t3.contenu_cours_tp, t3.nom_auteur_cours_tp, t3.type_devoir_cours_tp, t3.date_cloture_validation_cours_tp FROM test_site_relation_cours_tp_utilisateur t2 LEFT JOIN test_site_cours_tp t3 ON t2.id_cours_tp = t3.id_cours_tp WHERE t2.id_utilisateur=".$_SESSION['id_utilisateur']." AND t3.type_devoir_cours_tp='1' ORDER BY date_cloture_validation_cours_tp
peut être optimisée.
Qu'en pensez-vous ?
Partager