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

Langage SQL Discussion :

Ajout d'une ligne "total" en fin de résultat de requête


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut Ajout d'une ligne "total" en fin de résultat de requête
    Bonjour,

    Voilà mon problème, j'ai une table avec des références produits, leur quantité en stock, leur vente par trimestre.
    A la fin de mon résultat j'aimerai une ligne avec: "Total, la somme de toutes les références, la somme des vente par trimestre...".

    Comment puis je rajouter ça en fin de requête ? Avec un Join mais de quel type pour qu'une seule ligne soit créée en fin de requête ?

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonjour, alors deux éléments de réponse :

    1/ C'est pas au SGBD de s'amuser à faire des lignes de total : t'as déjà toutes les informations dans ta requête, donc tu peux parfaitement faire des cumuls avec ton programme appelant pour éviter de relire les données une seconde fois pour rien.

    2/ Si tu ne veux pas tenir compte du mon 1/, du peux trouver ton bonheur en faisant un "UNION" et la même requête avec des SUM() ou COUNT() sur tes différents champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select 'détail' as col, code, stock, ventes
    from produits
    union
    select 'total', count(*), sum(stock), sum(ventes)
    from produits

  3. #3
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Par défaut
    En fonction du SGBD et de sa version, vous pouvez utiliser l'option ROLLUP de la clause GROUP BY.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    Ok merci j'arrive bien à rajouter ma ligne, mais elle sort en plein milieu des autres résultats, je n'arrive pas à classer le résultat, en essayant le tri sur le premiere requete ça ne marche pas et sur la deuxième non plus...

  5. #5
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Par défaut
    Essayez de nous fournir la structure de/des table(s) au format SQL (CREATE TABLE..) ainsi qu'un jeu d'essai (INSERT INTO...).
    Montrez-nous le résultat que vous attendez.
    Indiquez-nous le SGBD aussi

    C'est pas évidant d'aider avec si peu d'information.

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    en vous basant sur ma requête, si vous ajoutez bien le champ "détail"/"total" en première position, vous pouvez faire un "order by 1" : total étant alphabétiquement après détail, la ligne de total sera rejetée à la fin

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 48
    Par défaut
    Mon order by doit il porter sur la première partie (avant le UNION) ou après ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/07/2015, 15h24
  2. [Débutant] Ajouter une ligne pour Total dans un JqGrid
    Par mannou87 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 17/05/2013, 13h27
  3. Réponses: 2
    Dernier message: 30/06/2008, 10h20

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