IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

chargement d'un tableau à partir d'une requête de jointure


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 43
    Par défaut chargement d'un tableau à partir d'une requête de jointure
    Bonjour tout le monde,
    Je suis entrain de créer un système de saisie des notes des élèves,
    voici le modèle relationnel :
    ( lien de l'image si c'est pas visible : http://postimg.org/image/rdrup4n93

    l'utilisateur choisit la classe, la matière et le trimestre,
    le tableau contenant les colonnes suivantes : id de l'eleve, son nom , son prénom et son note dans cette matière,
    ce tableau ( basé sur une requete)est en saisie pour que l'utilisateur puisse entrer les notes,
    pour cela j'ai fait la requete suivante pour charger le tableau de saisie des notes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT eleve.IDeleve, eleve.nom, eleve.prenom, note.note FROM
     eleve, note, matière
    WHERE eleve.Code_classe = {param1} AND note.numero_trimestre= {param2} AND matière.code_matière= {param3}
    et le code d'exécution est comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    REQ_saisie_note.param2= COMBO_Trimestre..Valeur
    REQ_saisie_note.param1=TABLE_REQ_classes_inscription.COL_Code_classe[TableSelect(TABLE_REQ_classes_inscription)]
    REQ_saisie_note.param3=TABLE_Matière.COL_Code_matière[TableSelect(TABLE_Matière)]
     
    HExécuteRequêteSQL(REQ_saisie_note)
    ça se compile sans erreur mais le tableau ne se remplie pas, est ce que la requete n'est pas adéquate ? ou bien d'autres choses ?
    Merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 43
    Par défaut
    remarque: le fichier matière_élève est( malgré les deux fichiers matière et élève ne le sont pas) , est ce que ça peut être d'ou vient le problème ? est ce que je dois le remplir moi-même ?

  3. #3
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Ta requêtes n'est pas bonne, il n'y a aucune jointure entre les fichiers eleve, note et matière que tu déclares dans le FROM.
    En plus il te manques le fichier matiere_eleve dans la requête (je comprends que tu as ajouté la rubrique IDeleve dans le fichier note pour y palier, mais cette rubrique n'a pas lieue d'être dans ce fichier)

    Je serai toi j'utiliserais l'éditeur de requête de windev il déterminera toutes les jointures en fonction de ton analyse.

    Ceci dit je ne suis pas sur que cette requêtes retournes les valeurs que tu souhaites.
    Cette requête ne retournera rien tant qu'aucune note ne sera saisie...

    J'essaie de comprendre ce que tu veux faire :
    Tu souhaites afficher dans un champ table la liste des élèves d'une classe et s'il y a des notes pour une matière et un trimestre défini en paramètre les afficher aussi.

    Si c'est ça, cela signifie que tu dois faire une jointure gauche (LEFT OUTER JOIN) vers le fichier note.

    Ta requête devient

    Code : 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
    SELECT
    	eleve.IDeleve, 
    	eleve.nom, 
    	eleve.prenom, 
    	note.note 
    FROM
    	eleve
    	INNER JOIN
    	matière_eleve
    		ON eleve.IDeleve = matière_eleve.IDeleve
    	LEFT OUTER JOIN
    	note
    		ON matière_eleve.IDmatière_eleve = note.IDmatière_eleve
    WHERE 
    	eleve.Code_classe          = {param1} 
    AND	matière_eleve.code_matière = {param3}
    AND	note.numero_trimestre      = {param2}
    Vérifies les noms des fichiers et des rubriques il est possible que je me sois trompé, surtout avec les accents que tu as mis dans les noms...

    Je précise que la définition des jointures gauches, droites ou totales sont possible avec l'éditeur de requête de windev. Il suffit de double cliquer sur le symbole de jointure dans le schéma de la requête et une fenêtre s'ouvre avec la liste des jointures. Il suffit de cocher ce que l'on veut inclure et le tour est joué...

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 43
    Par défaut
    Merci Laurent pour votre tentative de m'aider,
    j'ai passé deux heures tester e que tu m'a proposé, mais en vain,
    ceci me donne le même résultat : un tableau vide.
    est ce que je dois remplir le fichier matière_élève ( qui a été créé automatiquement pour gérer la liaison n-n entre élève et matière ) ?
    est ce que vous pouvez me proposer une autre façon de procéder ?
    merci d'avance

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 25
    Par défaut
    Je ne suis pas un as en SQL, mais je dirais que si tes tables "matiere_eleve" ET "eleve" sont vides, la requête ne te retournera aucun enregistrement puisqu'il y a une jointure naturelle sur ces deux tables ...

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    La piste de lolo est bonne mais la dernier jointure doit être complété par la restriction si on mets la restriction dans le WHERE la jointure devient un INNER donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT
    	eleve.IDeleve, 
    	eleve.nom, 
    	eleve.prenom, 
    	note.note 
    FROM
    	eleve
    	INNER JOIN matière_eleve ON eleve.IDeleve = matière_eleve.IDeleve
    	LEFT OUTER JOIN	note ON matière_eleve.IDmatière_eleve = note.IDmatière_eleve AND	note.numero_trimestre      = {param2}
    WHERE 
    	eleve.Code_classe          = {param1} 
    AND	matière_eleve.code_matière = {param3}

Discussions similaires

  1. Enregistrer un tableau à partir d'une requête
    Par stannis dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2012, 10h14
  2. [A-03] Création d'un tableau à partir d'une requête
    Par helprojet dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/02/2009, 12h41
  3. Réponses: 19
    Dernier message: 04/08/2008, 12h38
  4. [SQL] Tableau associatif à partir d'une requête
    Par hugo69 dans le forum WinDev
    Réponses: 1
    Dernier message: 24/03/2007, 19h22
  5. [PHPLIB] Afficher un tableau à partir d'une requête
    Par Erigion dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 06/02/2006, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo