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

MySQL Discussion :

Requête pour faire la somme d'un champ


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Par défaut Requête pour faire la somme d'un champ
    Bonjour à tous,

    Dans une de mes tables j'ai 3 clés étrangères à savoir : Mle, NumProces et NumCompte.

    Je voudrais créer une procédure stockée qui peut sélectionner tout les enregistrements d'une de ces clés étrangères dans la table où ils ont migré.

    Voilà comment j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Create procedure rechercherDossier(passepartout varchar(25))
    Begin 
     
    Select d.*,a.CodeAgent,a.NomAgent,a.PrenomAgent,c.CodeClient ,c.NomClient,c.PrenomClient,p.LibelleProces,p.NumRegion,r.NomRegion, sum(MontantDemande) as montantDemande,sum(MontantRecommande) as montantRecommande,sum(MontantAccorde) as montantAccorde from dossier d,agent a,client c,proces p ,region r where d.Mle = a.Mle and d.NumCompte = c. NumCompte and d.NumProces = p. NumProces  and p.NumRegion = r.NumRegion and p.LibelleProces = passepartout or  d.Mle= a.Mle and d.NumCompte = c. NumCompte and d.NumProces = p.NumProces and p.NumRegion = r.NumRegion and c.CodeClient = passepartout or d.Mle = a.Mle and d.NumCompte = c.NumCompte and d.NumProces = p.NumProces and p.NumRegion = r.NumRegion and a.CodeAgent = passepartout; 
    End
    Le problème,ce que cette procédure me renvoi un seul enregistrement quelque soit le nombre de fois qu'existe la variable en paramètre("passepartout").

    Quand j'enlève les fonctions d'agrégation j'ai le résultat escompté.Si quelqu'un sait comment je dois faire merci de m'aider.

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut Kasko.

    Ce n'est pas ainsi que l'on traite un select dans une procédure stockée.
    Pour ce faire, tu dois créer un cursor. A titre d'exemple, voici comment procéder :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    -- =================
    -- Procédure stockée
    -- =================
     
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `test`$$
     
    CREATE PROCEDURE `test`(_i int)
    BEGIN
    DECLARE _fin INTEGER DEFAULT 1;
    DECLARE _z   INTEGER DEFAULT 0;
    DECLARE _tab CURSOR FOR SELECT id FROM test WHERE next = _i;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _fin = 0;
     
    OPEN _tab;
    FETCH _tab INTO _z;
     
    WHILE (_fin)
    DO
    	select _z;
     
    	FETCH _tab INTO _z;
    END WHILE;
     
    CLOSE _tab;
     
    END $$
    DELIMITER ;
    @+

Discussions similaires

  1. [AC-2010] Récuperer un total dans une requête pour faire un calcul dans un champ
    Par infoprev dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 20/02/2012, 09h07
  2. Requête pour faire une addition sur autres requêtes
    Par guenfood dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/06/2006, 18h35
  3. Réponses: 4
    Dernier message: 09/02/2006, 15h20
  4. Probleme pour faire une somme sous Excel
    Par Nicolas92 dans le forum Excel
    Réponses: 5
    Dernier message: 02/12/2005, 11h38
  5. Probleme pour faire une somme dans header ??
    Par snoop57 dans le forum Access
    Réponses: 7
    Dernier message: 01/12/2005, 13h40

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