Problème de requète jointure

Résolu
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - Modifié par jordane45 le 29/06/2014 à 23:52
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 1 juil. 2014 à 14:31
Bonjour,
je voudrais afficher les notes des élèves d'une classe .
exemple :

N°1 matricule nom prenoms sexe age
1 001 coulibaly ange F 14ans 10 15 07 13
2 002 koffi paul M 15ans 05 19 14 18

1. ma requête m'affiche pas d'erreur
2. je l'ai executer en direct dans la base de données . ça affiche un resultat mais pas comme je souhaite
voici mon code :
<?php


if(isset($_GET['mat'])); $mat = urldecode($_GET['mat']); echo $mat;
if(isset($_GET['class'])); $class = urldecode($_GET['class']); echo $class;
//calcul de moyennes
$req = mysql_query("

SELECT *
FROM notes a,

tb_matieres c,
inscription e
WHERE a.eval = '".$class."'

AND b.id = c.id
AND a.date_enrg = '2014-04-02 18:51:30'
AND c.matiere = '".$mat."'
AND a.id_elv = e.id


") or die('no');


?>
voici la structure de mes tables concernées :


Structure de la table 'notes'

CREATE TABLE IF NOT EXISTS 'notes' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'note' float NOT NULL,
  'obs' varchar(200) NOT NULL,
  'pseudo' varchar(180) NOT NULL,
  'code' int(11) NOT NULL,
  'id_elv' int(11) NOT NULL,
  'eval' varchar(150) NOT NULL,
  'date_enrg' datetime NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;

--
-- Contenu de la table 'notes'
--

INSERT INTO 'notes' ('id', 'note', 'obs', 'pseudo', 'code', 'id_elv', 'eval', 'date_enrg') VALUES
(46, 12, 'Assez Bien', 'admin', 0, 1, '6ième', '2014-04-02 18:51:30'),
(47, 19, 'Trés bien', 'admin', 0, 2, '6ième', '2014-04-02 18:51:30'),
(48, 15, 'Bien', 'admin', 1, 1, '6ième', '2014-04-02 18:52:20');
COMMIT;



--
-- Structure de la table 'tb_matieres'
--

CREATE TABLE IF NOT EXISTS 'tb_matieres' (
  'id' int(11) NOT NULL,
  'matiere' varchar(180) NOT NULL,
  'id_elv' int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table 'tb_matieres'
--

INSERT INTO 'tb_matieres' ('id', 'matiere', 'id_elv') VALUES
(46, 'MATHEMATIQUES', 1),
(47, 'MATHEMATIQUES', 2),
(48, 'MATHEMATIQUES', 1);
COMMIT;


--
-- Structure de la table 'inscription'
--

CREATE TABLE IF NOT EXISTS 'inscription' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'num' varchar(60) NOT NULL,
  'annee_scolaire' varchar(15) NOT NULL,
  'matricule' varchar(15) NOT NULL,
  'affecte' varchar(80) NOT NULL,
  'nom' varchar(200) NOT NULL,
  'prenom' varchar(220) NOT NULL,
  'date_naiss' varchar(30) NOT NULL,
  'sexe' varchar(5) NOT NULL,
  'montant_inscript' varchar(30) NOT NULL,
  'etabl_orgin' varchar(200) NOT NULL,
  'drenet' varchar(150) NOT NULL,
  'niv_precdt' varchar(30) NOT NULL,
  'niv_act' varchar(100) NOT NULL,
  'decision_admissibilite' varchar(60) NOT NULL,
  'som_tot_a_payer' varchar(30) NOT NULL,
  'som_verse' varchar(60) NOT NULL,
  'date_versmt' varchar(30) NOT NULL,
  'date_prch_versmnt' varchar(30) NOT NULL,
  'tel' varchar(30) NOT NULL,
  'fax' varchar(30) NOT NULL,
  'mail' varchar(150) NOT NULL,
  'site' varchar(150) NOT NULL,
  'pere' varchar(200) NOT NULL,
  'mere' varchar(200) NOT NULL,
  'prers_ct' varchar(200) NOT NULL,
  'contact' varchar(30) NOT NULL,
  'avatar' varchar(180) NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;

--
-- Contenu de la table 'inscription'
--

INSERT INTO 'inscription' ('id', 'num', 'annee_scolaire', 'matricule', 'affecte', 'nom', 'prenom', 'date_naiss', 'sexe', 'montant_inscript', 'etabl_orgin', 'drenet', 'niv_precdt', 'niv_act', 'decision_admissibilite', 'som_tot_a_payer', 'som_verse', 'date_versmt', 'date_prch_versmnt', 'tel', 'fax', 'mail', 'site', 'pere', 'mere', 'prers_ct', 'contact', 'avatar') VALUES
(1, '1', '2013-2014', '001/2013', '', 'COULIBALY', 'ZANA', '02/06/1999', 'M', '6000', 'MAMI FAITAI', 'ABIDJAN', '3IEME', '6ième', 'Admis', '1000000', '250000', '02/03/2014', '02/04/2014', '22457895', '22457895', 'info@global-aeit.com', 'www.global-aeit.com', '', '', '', '', 'P9290062.JPG');
COMMIT;

25 réponses

msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
Modifié par jordane45 le 1/07/2014 à 10:11
voici le resultat :
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 juil. 2014 à 02:02
demain j'essaie avec plusieurs notes avnt de formé le sujet .
merci @jordane45 ans toi je suis rien . que dieu te benisse . bonne nuit.
0
Wiist Messages postés 12 Date d'inscription mardi 1 juillet 2014 Statut Membre Dernière intervention 28 juillet 2014
1 juil. 2014 à 10:49
Bonjour msi79,

Je me trompe peut être mais il me semble que tu as fait une coquille qui peut expliquer pourquoi tu as un resultats mais pas le bon, dans ta formulation de jointure tu réfère "notes" à "a", tb_matieres à "c", et "inscription" à "e" or dans ton where tu fais appel à un b que tu n'as jamais défini.

Regarde si c'est pas ca ton soucis.

Cordialement
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 juil. 2014 à 11:41
Bonjour je peux pa clore le sujet par ce que j'ai un nouveau souci .
je remarque que les notes ne sont pas bien rangé ou bien aligner .
je m'explique . supposons qu'un élève n' ai pas fait une évaluation
. je viens d'enregistrer les notes d'une évaluation et ça supposait être la 3ième note . donc toutes les notes de cette 3ième évaluation devraient être dans le 3ième rangé (colonne). mais il se trouve que la note de l'élève qui n'a pas fait les 3 premières évaluations se trouve pas au bon endroit . la note qui devrait être dans la rangé 3 se trouve dans la rangé 1 comme si cet élève avait fait la première évaluation.

ma question est comment faire pour que chaque note se retrouve dans la rangé qui correspond a la nieme évaluation.

voici par exemple un vue de la chose :


la on vois que la note 1 obtenue par MAMBE qui devrai être sur la même colonne que 12 ; 6 de la dernière colonne se trouve a la première colonne . comment m'arranger pour que 1 qui est une note de la 3ieme évaluation se trouve a la colonne 3
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
1 juil. 2014 à 11:54
Bonjour je peux pa clore le sujet par ce que j'ai un nouveau souci .
je remarque que les notes ne sont pas bien rangé ou bien aligner .
Nouveau Souci... = Nouvelle question !!!!


supposons qu'un élève n' ai pas fait une évaluation
Mais bon... là .. ce n'est pas un souci de programmation... mais un souci de conception de ton appli...

Logiquement... si un élève n'a pas fait une évaluation... soit il a 0 ... soit il est marqué comme Absent. Et donc..il doit y avoir une ligne , dans ta table NOTES qui correspond à cet Elève... mais si dans la note tu as mis NULL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 juil. 2014 à 14:31
oui je vois merci .
0
Rejoignez-nous