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

Requêtes et SQL. Discussion :

Ajout d'une ligne "Total" dans le résultat d'une requete d'analyse croisée


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut Ajout d'une ligne "Total" dans le résultat d'une requete d'analyse croisée
    Bonjour,

    J'ai une table qui regroupe un ensemble de fiche et une table avec des statuts "ex: Statut1,Statut2, etc...)
    Ces deux tables sont reliées par une relation un à plusieurs.
    Ainsi, un Statut peut etre associé à plusieurs fiches.

    J'ai effectué une requete d'analyse croisée sur ces deux tables :

    -En entete de ligne je mets le nom de la fiche ( un des champs de la table fiche)

    -En entete de colonne je met le nom du statut ( champ de la table statut)

    -En valeur je met la clé étrangére "Statut" de la table Fiche et j'effectue l'opération "compte" sur ce champs

    J'obtient alors un tableau avec autant de colonne qu'il y a de statut, autant de ligne qu'il y a de fiches et autant de 1 qu'il y a de valeurs compté.
    La restitution est bonne cependant j'aimerais faire une ligne total.

    Comment crée dynamiquement cette ligne et l'ajouté à la restitution?
    Attention, je veux le total pas Colonne, donc il s'agit bien d'une ligne à ajouter en fin de restitution.

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    Bonjour,
    voici un exemple de ce que tu cherches :
    On souhaite obtenir les sommes en colonne et en ligne :

    Ref Total colonne Aout Juin Mai
    A1 8 0 5 3
    A2 13 0 3 10
    A4 8 4 4 0
    TOTAL 32 4 12 16
    Dans ce cas, il nous faut passer par une requête temporaire nommée RTotal qui va calculer les sommes des colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Commande.Ref, Mois, Commande.quantite AS Total,0 as Ordre 
    FROM Commande 
    UNION ( 
    SELECT "TOTAL", Mois, sum(Quantite),1 as Ordre FROM Commande GROUP BY Mois,"TOTAL",1);
    Explications :
    On utilise une requête Union pour rassembler les lignes de la table commande ainsi que les lignes Total. Le mot TOTAL sert à considerer le total comme une référence d'un produit.
    "Always look at the bright side of life." Monty Python.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Salut et merci de ta réponse.

    J'ai essayé de regarder ça de plus près mais je ne comprend pas la synthaxe de la requete RTotal. Je vais garder le meme exemple que tu a cité pour m'expliquer :

    Mon analyse croisée me donne le résultat suivant :
    Ref Total Aout Juin Mai
    A1 8 0 5 3
    A2 13 0 3 10
    A4 8 4 4 0
    Les colonnes n'apparaissent donc que si au moins une donnée existe, et s'il n'y avait pas de quantité pour aout par exemple, alors la colonne ne s'affiche pas.

    Ensuite je dois fusionner au résultat de cette requete la ligne total suivante :

    Total 32 4 12 16

    La requete RTotal, que tu me suggéres est donc capable de calculer autant de totaux qu'il y a de colonne existante dans mon analyse coisée, et de plus, elle respecte aussi l'odre de restitution des colonnes (ordre alphabétique) et la restitution se fait donc sur une seul ligne qu'on peut directement fusioner.

    Si cette requete fait ce que j'ai décrit ci dessus, alors cela serait la solution miracle pour mon probléme. Cependant je ne suis pas sur de ce que je dis et je ne comprend pas la synthaxe de cette requete. ET je ne sais pas si ça change grand chose, mais mon analyse croisée utilise des jointures sur une table de référence. Voici la code complet de mon analyse :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TRANSFORM Count([Base Livre Blanc].Statut) AS CompteDeStatut
    SELECT [Base Livre Blanc].[Références indemnités], Indemnité.libellé, Entité.code_Mini, Entité.Entité, IndemnitéEntité.Reponse_MOAM
    FROM [Statut LBI] INNER JOIN (Indemnité INNER JOIN ((Entité INNER JOIN IndemnitéEntité ON Entité.id = IndemnitéEntité.id_entité) INNER JOIN [Base Livre Blanc] ON (IndemnitéEntité.code_indemnité = [Base Livre Blanc].[Références indemnités]) AND (IndemnitéEntité.id_entité = [Base Livre Blanc].[id-entité])) ON Indemnité.code = IndemnitéEntité.code_indemnité) ON [Statut LBI].id_statut = [Base Livre Blanc].Statut
    GROUP BY [Base Livre Blanc].[Références indemnités], Indemnité.libellé, Entité.code_Mini, Entité.Entité, IndemnitéEntité.Reponse_MOAM
    PIVOT [Statut LBI].statut;

    Si tu pouvais m'expliquer plus précisement comment fonctionne la requete RTotal, parce que la je necomprend pas du tout le fonctionnement et je ne sais pas comment l'appliquer.

Discussions similaires

  1. [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
  2. [Débutant] ajout d'une ligne d'un tableau dans IE
    Par zais_ethael dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/06/2008, 02h59
  3. ajout d'une ligne de la base dans un vecteur
    Par yousfi.z dans le forum JDBC
    Réponses: 1
    Dernier message: 09/08/2006, 21h58

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