Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2010, 13h01   #1
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 166
Points : 2 300
Points : 2 300
Par défaut Afficher des groupes en colonne dans un tableau

Bonjour à tous et à toutes,
J'aimerai savoir si je peux afficher des groupes en colonne.
Ma requête me renvoie un emploie du temps avec comme champs:
_ client->nom
_ client ->id
_ date
_ sport
_ exercice

Un client peut être inscrit à un sport sur plusieurs dates et à chaque date il y aura des exercices différents.

Voici ma requete:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT  C.nom AS client,
            C.id AS id_clt,
            I.date,
	    S.libelle AS sport,
	    E.libelle AS exercices
FROM clients C
	LEFT JOIN inscriptions I ON I.client_id = C.id
	LEFT JOIN sport S ON S.id = I.sport_id
	LEFT JOIN sport_inscription_exercice SIC ON SIC.inscription_id = I.id
	LEFT JOIN exercices E ON E.id = SIC.exercice_id
Le résultat de la requête ressemble à ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Client id_clt Date____ Sport__ exercices
______________________________________
Arthur 0001 01/01/10  Tennis  frappe
Arthur 0001 01/01/10  Tennis  vise
Arthur 0001 01/01/10  Tennis  échauffement
Arthur 0001 01/01/10  Foot__ passe
Arthur 0001 01/01/10  Foot__ tir
Arthur 0001 01/01/10  Foot__ jongle
Arthur 0001 01/01/10  Basket tir
Arthur 0001 01/01/10  Basket dribble
Arthur 0001 02/01/10  Tennis vise
Arthur 0001 02/01/10  Tennis équilibre
Arthur 0001 02/01/10  Tennis court
Arthur 0001 02/01/10  Foot__ frappe
Arthur 0001 02/01/10  Foot__ arret
Arthur 0001 02/01/10  Basket court
Arthur 0001 02/01/10  Basket tir
J'aimerai avoir l'affichage suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Client id_clt
Date
Sport___ Sport__ Sport__ ...
Exercice Exercice Exercice
Exercice Exercice Exercice
Exercice Exercice Exercice
.
.
.
Date
Sport___ Sport__ Sport__ ...
Exercice Exercice Exercice
Exercice Exercice Exercice
Exercice Exercice Exercice
.
.
.
Pour notre exemple, le resultat serait:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Arthur 0001
01/01/10
Tennis Foot_ Basket
frappe passe tir
vise__ tir__ drible
echauf jongle
02/01/10
Tennis Foot__ Basket
vise__ frappe court
equili arret_ tir
court
Quelqu'un aurait donc une idée pour qu'à un moment donnée certains groupe soit affiché en colonne?

Merci d'avance
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 13h53   #2
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Bonjour,

Les objets qui permettent de faire des groupes sur des colonnes sont les tableaux croisés ("cross table" en anglais). Tu devras faire un cube de données ("data cube") à partir d'un data set, puis définir ton tableau croisé.

Si tu ne connais pas le principe des tableaux croisés, tu peux t'amuser à les manipuler sous BIRT pour voir comment ça marche, ou alors sur Excel, ça existe aussi. En gros le principe est de pouvoir présenter des données selon des règles de regroupement en lignes et/ou en colonnes, donc ton besoin.

Par contre, tu risques d'avoir beaucoup de mal à obtenir ton affichage comme tu le souhaites (avec les exercices affichés les uns en dessous des autres et à côté des autres), la règle implicite est très complexe. Tu devras probablement faire un script ou une transformation de données, ou alors des tableaux imbriqués.

Bon courage.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h01   #3
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 166
Points : 2 300
Points : 2 300
Citation:
Envoyé par nicolas.1.vives Voir le message
Bonjour,

Les objets qui permettent de faire des groupes sur des colonnes sont les tableaux croisés ("cross table" en anglais). Tu devras faire un cube de données ("data cube") à partir d'un data set, puis définir ton tableau croisé.

Si tu ne connais pas le principe des tableaux croisés, tu peux t'amuser à les manipuler sous BIRT pour voir comment ça marche, ou alors sur Excel, ça existe aussi. En gros le principe est de pouvoir présenter des données selon des règles de regroupement en lignes et/ou en colonnes, donc ton besoin.

Par contre, tu risques d'avoir beaucoup de mal à obtenir ton affichage comme tu le souhaites (avec les exercices affichés les uns en dessous des autres et à côté des autres), la règle implicite est très complexe. Tu devras probablement faire un script ou une transformation de données, ou alors des tableaux imbriqués.

Bon courage.
Merci de votre réponse.
J'avais pensé à faire un tableau croisé mais ceci me paraissais beaucoup trop compliqué pour ce que je voulais faire.
De plus, je n'arrive pas à afficher un champs string dans mon tableau croisé car il demande une opération! Enfin comment faire pour afficher mes deux premières lignes dans mon tableau croisé ?
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h15   #4
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
En effet, tu es obligé d'utiliser des agrégations pour afficher des données dans un tableau croisé. Et il n'y en a aucune existante qui correspond à ton besoin (les agrégations sur les string sont rares et pas très intéressantes).

Je pense que le plus simple, c'est de faire un tableau croisé avec les sports en colonne, les clients et dates en ligne (ça ne correspond pas vraiment au format que tu souhaites mais bon c'est un exemple), et dans les cellules de données, tu mets un tableau avec les exercice dans les lignes de détail, avec un filtre sur le tableau filtrant les exercices en fonction du client, de la date et du sport correspondant.

Tu me diras si tu y arrives.

A+

Edit : maintenant que j'y pense, si tu fais simplement comme ça, tu auras des colonnes vides (il t'affichera une colonne pour chaque sport, pour tous les utilisateurs et toutes les dates, donc tu auras probablement des colonnes inutilisées ici ou là). Donc tu devras peut-être faire une triple imbrication : un tableau simple avec un groupement sur l'utilisateur, et aussi peut-être la date ; le tableau croisé ; puis le tableau des exercices.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 14h43   #5
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 166
Points : 2 300
Points : 2 300
Citation:
Envoyé par nicolas.1.vives Voir le message
Et dans les cellules de données, tu mets un tableau avec les exercice dans les lignes de détail, avec un filtre sur le tableau filtrant les exercices en fonction du client, de la date et du sport correspondant.
Je n'arrive pas à mettre un tableau dans les cellules de données étant donnée qu'il ne veut qu'une aggregation! Comment faire un filtre dans un tableau récupérant des champs d'un autre tableau?


De plus, cette solution pourrait ne pas me convenir car je ne pourrai pas par la suite ajouter des information du client sur la même ligne que son nom et son id (par exemple son adresse, sa ville, son poids, sa taille, sa formule,...)
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 15h19   #6
Membre confirmé
 
Nicolas Vives
Inscription : avril 2010
Messages : 178
Détails du profil
Informations personnelles :
Nom : Nicolas Vives

Informations forums :
Inscription : avril 2010
Messages : 178
Points : 212
Points : 212
Voilà un exemple. C'est vrai qu'il y a du bidouillage (obligation de mettre une mesure pour pouvoir mettre un tableau), mais sinon c'est relativement simple. Tu verras la syntaxe du filtre dans le tableau.

Quant à ajouter des informations, je ne vois pas ce qui te gêne. Eventuellement tu poseras la question à ce moment là.

Bon courage.
nicolas.1.vives est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 15h41   #7
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 166
Points : 2 300
Points : 2 300
Citation:
Envoyé par nicolas.1.vives Voir le message
Voilà un exemple. C'est vrai qu'il y a du bidouillage (obligation de mettre une mesure pour pouvoir mettre un tableau), mais sinon c'est relativement simple. Tu verras la syntaxe du filtre dans le tableau.

Quant à ajouter des informations, je ne vois pas ce qui te gêne. Eventuellement tu poseras la question à ce moment là.

Bon courage.
Merci je vais essayer
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 10h21   #8
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 166
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 166
Points : 2 300
Points : 2 300
Merci beaucoup cette tactique fonctionne!
J'ai encore un bug, il me manque des sports pour un client alors que la requête me renvoie bien des exercices! Mais je pense que ceci doit être une faute de manipulation! Donc je résous le bug!

Merci encore
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h06.


 
 
 
 
Partenaires

Hébergement Web