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

BIRT Discussion :

Un soucis de conception de la DataSet à l'aide d'une requête SQL


Sujet :

BIRT

Vue hybride

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 156
    Par défaut Un soucis de conception de la DataSet à l'aide d'une requête SQL
    Bonjour tout le monde,

    Je vous explique mon problème.

    J'ai une table sql (elections présidentielles 2012 de la France )qui contient des champs(Code de la commune, code du département, les noms des 10 candidats ainsi que leurs voix par commune (10 voix) )

    La requête à exécuter est facile :
    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
     
    select public.election.nom1,public.election.voix1,
    	   public.election.nom2,public.election.voix2,
    	   public.election.nom3,public.election.voix3,
    	   public.election.nom4,public.election.voix4,
    	   public.election.nom5,public.election.voix5,
    	   public.election.nom6,public.election.voix6,
    	   public.election.nom7,public.election.voix7,
    	   public.election.nom8,public.election.voix8,
    	   public.election.nom9,public.election.voix9,
    	   public.election.nom10,public.election.voix10
     
    from public.election
     
    where public.election.code_commune =? (le paramètre à passer)
    Je veux représenter ces données dans un camembert de façon à ce que chaque candidat et chaque voix lui correspond apparaissent dans la meme répartition, sauf qu'il y'a 3 champs disponibles pour la création du Camembert le champ Category Definition, slice Size Definition et le 3ème Optional Grouping.
    Et moi j'ai 10 champs à remplir, comment faire?

    Est ce que c'est la requete qu'il faut modifier ou quoi au juste?

    Merci pour vos réponses.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Par défaut
    Décidément tu n'as pas de chance Nabil, à ma connaissance le seul moyen est de créer un dataset qui transforme ces 10 colonnes en 10 lignes, et ce n'est pas vraiment facile

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 156
    Par défaut
    Est ce que tu peux me décrire la procédure ?

    le data Set que j'ai crée, contient la requête que j'ai posté mais je ne sais trop quoi faire après.
    Je pense que t'as compris ce qu'il faut avoir comme résultat?

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2009
    Messages
    529
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2009
    Messages : 529
    Par défaut
    Il y a plusieurs solutions, je te donne la moins performante mais aussi la plus accessible, comme j'ai vu dans un autre post que tu avais déjà manipulé les union sql.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select 1 as idCandidat, public.election.nom1 as nomCandidat,public.election.voix1 as voix from public.election where public.election.code_commune=?
     
    UNION
     
    select 2 as idCandidat, public.election.nom2 as nomCandidat,public.election.voix2 as voix from public.election where public.election.code_commune=?
     
    UNION
     
    select 3 as idCandidat, public.election.nom3 as nomCandidat,public.election.voix3 as voix from public.election where public.election.code_commune=?
     
    //etc jusqu'à 10
    Il ya donc dans la requête 10 fois '?', donc 10 paramètres de dataset qu'il faut tous relier au paramètre 'commune' du rapport.
    Au final, tu te retrouves avec un dataset de 10 lignes et 3 colonnes qui permettra de produire facilement ce graphe 'camembert', en mettant le nom du candidat en catégorie

  5. #5
    Invité
    Invité(e)
    Par défaut
    Deja, a la base, personnellement je ne comprends pas comment ta table est construite. Tu ne devrais pas avoir une colonne nom et une colonne voix ? (e ne vois pas l'interet d'avoir des colonnes "nom1", "nom2", "nom3", ...)

    Ensuite, aec une requête qui va bien, ca te sortirais la liste :
    Nom | Voix
    A 6
    B 3
    C 12
    D 1
    ...

    Et tu pourrais mettre la colonne nom dans Category du camembert, et la colonne voix dans Slice Size si je ne me trompe pas. Ca te fait un camembert divisé en autant de nombre de nom,avec des parts qui ont la taille de la répartition en voix.

    Si c'est ce que tu veux, essaye de revoir la conception de la table en amont.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 156
    Par défaut
    En fait ,
    La table que j'ai crée contient 23 champs les nom(1-10) sont des champs de la table ainsi que les voix(1-10) avec d'autres champs comme le code de département et le code de la commune et le libellé de la commune.

    J'essayerai la méthode que vous m'avez dit et si je trouve des problèmes je reviens poster.
    Merci bcq

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 156
    Par défaut
    J'ai suivi la méthode que tu m'as dit donino pour la génération du camembert
    elle m'a donnée exactement ce que je veux sauf qu'il y'a une erreur qui s'est affiché après la prévisualisation.

    Tu la verras sur l'image ce que je viens de dire.
    Images attachées Images attachées  

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

Discussions similaires

  1. Souci avec une requête SQL
    Par req_sql dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/12/2014, 11h39
  2. Soucis sur une requête sql
    Par tryan dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2010, 21h10
  3. [VB6] ptit souci dans une requête SQL
    Par jfdmagic dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/06/2009, 16h21
  4. Conception d'une requête SQL
    Par robin.pariset dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/10/2007, 10h10
  5. [Conception] Soucis dans une requête
    Par PrinceMaster77 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/12/2006, 11h53

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