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

PL/SQL Oracle Discussion :

[DEBUTANT] Procedure stockée


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut [DEBUTANT] Procedure stockée
    Bonjours à tous,

    Voilà je débute sous oracle, j'aimerai réaliser la chose suivante :
    J'ai une requete

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select e.nomEleve, e.prenomEleve, n.note, m.libelleMatiere, c.libelleClasse
    from eleves e, notes n, matieres m, evaluations ev, classes c
    where e.numeleve=ev.numeleve
    and n.numnote=ev.numnote
    and m.nummatiere=ev.nummatiere
    and c.numClasse=ev.numClasse
    and c.numClasse=1;

    qui me retourne le resultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    NOMELEVE	PRENOMELEVE	NOTE	LIBELLEMATIERE	LIBELLECLASSE
    ELEVE1      Christophe	18	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE2      Eric	19	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE2      Eric	12	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE1      Christophe	12	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE3      Melissa	15	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE2      Eric	12	INFORMATIQUE	BTS IG 2EME ANNEE
    ELEVE3      Melissa	19	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE2      Eric	20	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    ELEVE2      Eric	12	ECONOMIE-DROIT	BTS IG 2EME ANNEE
    Je met donc ceci dans un curseur, mais maintenant j'aimerai faire le traitement suivant

    Pour chaque eleve faire la moyenne de chaque matiere

    J'aimerai donc un resultat qui ressemblerai à çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    NOMELEVE	PRENOMELEVE	ECO   INFO
    ELEVE1      Christophe	        11	13
    ELEVE2      Eric	                12	13
    ELEVE3      Melissa	        14     13
    Mais je ne sais pas du tout comment procéder.
    Je vous remercie d'avance !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Voici un peu de lecture, ce sera sans doute plus efficaces que mes explications : http://sqlpro.developpez.com/cours/sqlaz/ensembles/
    Dans votre cas, vous pouvez essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT e.nomEleve, e.prenomEleve, avg(n.note) AS Moyenne, m.libelleMatiere, c.libelleClasse
    FROM eleves e
    JOIN evaluations ev
    	 ON e.numeleve=ev.numeleve
    JOIN notes n
    	 ON n.numnote=ev.numnote
    JOIN matieres m
    	 ON m.nummatiere=ev.nummatiere
    JOIN classes c
    	 ON c.numClasse=ev.numClasse
    WHERE c.numClasse=1
    GROUP BY e.nomEleve, e.prenomEleve, m.libelleMatiere, c.libelleClasse;
    EDIT : Je précise, au cas où vous ne connaitriez pas cette ecriture des jointures, qu'il s'agit de la norme.
    Comme vous débutez, un autre lien pour la route
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    A l'évidence, vous pouvez faire cela en une requête. Une procédure stockée est inutile ici.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Citation Envoyé par Snipah Voir le message
    Voici un peu de lecture, ce sera sans doute plus efficaces que mes explications : http://sqlpro.developpez.com/cours/sqlaz/ensembles/
    Dans votre cas, vous pouvez essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT e.nomEleve, e.prenomEleve, avg(n.note) AS Moyenne, m.libelleMatiere, c.libelleClasse
    FROM eleves e
    JOIN evaluations ev
    	 ON e.numeleve=ev.numeleve
    JOIN notes n
    	 ON n.numnote=ev.numnote
    JOIN matieres m
    	 ON m.nummatiere=ev.nummatiere
    JOIN classes c
    	 ON c.numClasse=ev.numClasse
    WHERE c.numClasse=1
    GROUP BY e.nomEleve, e.prenomEleve, m.libelleMatiere, c.libelleClasse;
    EDIT : Je précise, au cas où vous ne connaitriez pas cette ecriture des jointures, qu'il s'agit de la norme.
    Comme vous débutez, un autre lien pour la route
    http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Merci de ton aide ! Mais le résultat obtenue avec ta requête n'est pas le résultat souhaité ! en effet je souhaiterai que chaque libelleMatiere se présent dans mon curseur se transforme en une colonne pour par la suite avoir toutes les informations d'un élève sur une seul ligne

    comme ceci :

    ELEVE MATHS INFO ECO
    unEleve 17 13 12

    Et non:

    ELEVE moyenne libelleMatiere
    unEleve 17 MATHS
    unEleve 13 INFO
    unEleve 12 ECO


    C'est pourquoi je souhaite passer par une procédure stockée, dans un premier temps je capte toute les notes d'un élève pour chaque matiere

    Et ensuite je veux calculer la moyenne pour chaque matiere et mettre en forme comme dit précédemment.

    Citation Envoyé par GoLDoZ Voir le message
    A l'évidence, vous pouvez faire cela en une requête. Une procédure stockée est inutile ici.
    Je n'ai pas réussi à faire ceci en une simple requête, de plus dans le cadre de mes études il faut utilisé une procédure stockée...


    Je vous remercie de votre aide !

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par erigoal Voir le message
    ...en effet je souhaiterai que chaque libelleMatiere se présent dans mon curseur se transforme en une colonne pour par la suite avoir toutes les informations d'un élève sur une seul ligne

    comme ceci :

    ELEVE MATHS INFO ECO
    unEleve 17 13 12

    Et non:

    ELEVE moyenne libelleMatiere
    unEleve 17 MATHS
    unEleve 13 INFO
    unEleve 12 ECO

    ...
    Cherchez pivot sur ce site dans SQL ou PL/SQL.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Par défaut
    En PL/SQL, un peu de logique suffit. Vous ordonnez votre curseur par élève, et tant que les enregistrements concernent cet élève, vous concaténez les autres données dans une autre variable ou dans un tableau.
    Ceci n'est qu'un exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. debutant procedure stockée
    Par nawal106 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 23/10/2006, 10h06
  2. [TSQL][ASE]debutant procedure stocké
    Par agougeon dans le forum Sybase
    Réponses: 6
    Dernier message: 17/07/2006, 08h53
  3. Réponses: 2
    Dernier message: 31/08/2004, 11h45
  4. [DEBUTANT]Procedure stocké
    Par FreshVic dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 12/07/2004, 12h41
  5. [Debutant][SQL] Execution de procedures stockées
    Par Yannos94 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 18h09

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