[Résolu] Eviter les redondances dans un rapport
Modérateur : Vilains modOOs
Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
[Résolu] Eviter les redondances dans un rapport
Bonjour à tous,
Je dispose d'une base de données comportant les articles d'un magazine et ses propriétés (date, auteur, index thématique...).
Je tente de faire des listings papier de ces articles, mais je rencontre plusieurs difficultés.
Voici la première : je construit un listing chronologique des articles en mentionnant pour chacun d'eux ses auteurs et ses index (cf. le rapport rp1 de la base jointe)
Le problème est que je n'arrive pas à éviter des redondances.
exemple : si un article possède 2 auteurs et 2 thèmes, j'aimerai obtenir
Titre
auteur 1 index 1
auteur 2 index 2
ou
Titre
auteur1
auteur 2
index1
index 2
Mais j'obtiens
Titre
auteur 1 index 1
auteur 2 index 1
auteur 1 index 2
auteur 2 index 2
ou
Titre
auteur 1
index 1
auteur 2
index 1
auteur 1
index 2
auteur 2
index 2
Quelqu'un aurait-il une idée pour m'aider à régler le problème ?
Merci d'avance
Je dispose d'une base de données comportant les articles d'un magazine et ses propriétés (date, auteur, index thématique...).
Je tente de faire des listings papier de ces articles, mais je rencontre plusieurs difficultés.
Voici la première : je construit un listing chronologique des articles en mentionnant pour chacun d'eux ses auteurs et ses index (cf. le rapport rp1 de la base jointe)
Le problème est que je n'arrive pas à éviter des redondances.
exemple : si un article possède 2 auteurs et 2 thèmes, j'aimerai obtenir
Titre
auteur 1 index 1
auteur 2 index 2
ou
Titre
auteur1
auteur 2
index1
index 2
Mais j'obtiens
Titre
auteur 1 index 1
auteur 2 index 1
auteur 1 index 2
auteur 2 index 2
ou
Titre
auteur 1
index 1
auteur 2
index 1
auteur 1
index 2
auteur 2
index 2
Quelqu'un aurait-il une idée pour m'aider à régler le problème ?
Merci d'avance
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par ClayStone le 26 juin 2018 10:24, modifié 1 fois.
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Eviter les redondances dans un rapport
Salut,
Comme toujours, lorsqu'on n'arrive pas à extraire les données, c'est que le modèle relationnel n'est pas bon.
Commence par nous détailler tes tables et leurs relations : Parce que tu nous parles d'auteur et de thème alors qu'il n'y a aucune table de ce nom.
Comme toujours, lorsqu'on n'arrive pas à extraire les données, c'est que le modèle relationnel n'est pas bon.
Commence par nous détailler tes tables et leurs relations : Parce que tu nous parles d'auteur et de thème alors qu'il n'y a aucune table de ce nom.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
Bonjour Dude, et merci
En effet, j’aurais dû détailler. C'est clair dans ma tête, mais je suis le seul à y être... dans ma tête.
Ma table principale, c’est la table ARTICLE avec comme champs :
la table ARTICLE est liée (n to n) avec les tables NOM et COUSIN qui renseignent l’identité (Nom et Prenom) de
- l’auteur de l’article (table REL_ARTICLE_AUTEUR)
- le personnage dont il est question dans l’article (table REL_ARTICLE_PERSON)
Les champs lbl_nom et lbl_prenom sont dans deux tables différentes pour limiter la longueur des listes lors de la saisie (de nombreux cousins ont le même nom de famille),
Les champs n_sur_index et n_sous_index sont dans deux tables différentes pour la même raison (limiter la longueur des listes lors de la saisie)
donc, et personne ne pouvait deviner…
auteur : identifié par COUSIN.id_cousin (et donc REL_ARTICLE_AUTEUR.ref_cousin_auteur)
dans mon rapport, c’est une concaténation des champs NOM.lbl_nom et COUSIN.lbl_prénom
thème (ou index) : identifié par INDEX.id_index (et donc REL_ARTICLE_INDEX.ref_index)
dans mon rapport, c’est une concaténation des champs SUR_INDEX.n_sur_index et INDEX.n_sous_index
Mon problème se résume à : Et donc à obtenir :
(on gagne en nombre de tables et de champs à traiter, mais on perd en lisibilité... Pas grave, pour obtenir les auteurs et index lisibles, je saurai me débrouiller en modifiant la requête source du rapport)
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 2
ou
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index1
REL_ARICLE_INDEX.ref_index 2
Mais pas
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 2
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 2
ou
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1
REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 1
REL_ARICLE_INDEX.ref_index 2
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index 2
Euh... C'est clair ??
En effet, j’aurais dû détailler. C'est clair dans ma tête, mais je suis le seul à y être... dans ma tête.
Ma table principale, c’est la table ARTICLE avec comme champs :
- Le titre et le sous-titre (qui peut être vide) de l’article
une relation 1 to n avec la table parution qui indique la date et le n° de parution
le n° de la page (et éventuellement bis ou ter) de l’article (dans le n° indiqué par la table parution)
la table ARTICLE est liée (n to n) avec les tables NOM et COUSIN qui renseignent l’identité (Nom et Prenom) de
- l’auteur de l’article (table REL_ARTICLE_AUTEUR)
- le personnage dont il est question dans l’article (table REL_ARTICLE_PERSON)
Les champs lbl_nom et lbl_prenom sont dans deux tables différentes pour limiter la longueur des listes lors de la saisie (de nombreux cousins ont le même nom de famille),
Les champs n_sur_index et n_sous_index sont dans deux tables différentes pour la même raison (limiter la longueur des listes lors de la saisie)
donc, et personne ne pouvait deviner…
auteur : identifié par COUSIN.id_cousin (et donc REL_ARTICLE_AUTEUR.ref_cousin_auteur)
dans mon rapport, c’est une concaténation des champs NOM.lbl_nom et COUSIN.lbl_prénom
thème (ou index) : identifié par INDEX.id_index (et donc REL_ARTICLE_INDEX.ref_index)
dans mon rapport, c’est une concaténation des champs SUR_INDEX.n_sur_index et INDEX.n_sous_index
Mon problème se résume à : Et donc à obtenir :
(on gagne en nombre de tables et de champs à traiter, mais on perd en lisibilité... Pas grave, pour obtenir les auteurs et index lisibles, je saurai me débrouiller en modifiant la requête source du rapport)
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 2
ou
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index1
REL_ARICLE_INDEX.ref_index 2
Mais pas
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 1 REL_ARICLE_INDEX.ref_index 2
REL_ARICLE_AUTEUR.ref_cousin_auteur 2 REL_ARICLE_INDEX.ref_index 2
ou
ARTICLE.titre
REL_ARICLE_AUTEUR.ref_cousin_auteur 1
REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index 1
REL_ARICLE_AUTEUR.ref_cousin_auteur 1
REL_ARICLE_INDEX.ref_index 2
REL_ARICLE_AUTEUR.ref_cousin_auteur 2
REL_ARICLE_INDEX.ref_index 2
Euh... C'est clair ??
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- IdOOle de la suite
- Messages : 25181
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: Eviter les redondances dans un rapport
Je n'ai toujours pas compris ce qu'était un cousin ?
Pour moi, cette information doit figurer de manière unique dans une table auteur.
En revanche, un article peut être écrit par plusieurs auteurs et un auteur peut écrire plusieurs articles.
Donc, il faut une table intermédiaire.
Pour moi, cette information doit figurer de manière unique dans une table auteur.
En revanche, un article peut être écrit par plusieurs auteurs et un auteur peut écrire plusieurs articles.
Donc, il faut une table intermédiaire.
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
En effet, j'ai bien besoin de la table intermédiaire pour les relations n to n.
Mais, oublie pour l'instant la structure de ma base, je ne crois pas que mon problème vient de là. J'ai le même problème avec une base plus simple (voir la base jointe). Je pense plutôt que c'est dans la création de mon rapport que se trouve le problème.
Je formule la question différemment, et je simplifie ma base de test.
J'ai des articles écrits par un ou plusieurs auteurs, et abordant un ou plusieurs thèmes.
Je souhaite obtenir la liste des auteurs et des thèmes pour chaque article.
En créant mon rapport, dès qu'un article possède deux auteurs, j'obtiens une réplétion du thème (et inversement). c'est cette répétition que je ne souhaite pas voir apparaître.
J'obtiens ceci, j'aimerai obtenir quelque chose comme ça Mais ça n'est peut-être pas possible avec les rapports de libreoffice...
Mais, oublie pour l'instant la structure de ma base, je ne crois pas que mon problème vient de là. J'ai le même problème avec une base plus simple (voir la base jointe). Je pense plutôt que c'est dans la création de mon rapport que se trouve le problème.
Je formule la question différemment, et je simplifie ma base de test.
J'ai des articles écrits par un ou plusieurs auteurs, et abordant un ou plusieurs thèmes.
Je souhaite obtenir la liste des auteurs et des thèmes pour chaque article.
En créant mon rapport, dès qu'un article possède deux auteurs, j'obtiens une réplétion du thème (et inversement). c'est cette répétition que je ne souhaite pas voir apparaître.
J'obtiens ceci, j'aimerai obtenir quelque chose comme ça Mais ça n'est peut-être pas possible avec les rapports de libreoffice...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Eviter les redondances dans un rapport
Bonjour
Tu peux déjà faire un second regroupement par Auteurs A+
Tu peux déjà faire un second regroupement par Auteurs A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
Merci Piaf,
En effet, ça enlève la moitié des répétitions. Mais ça ne me satisfait pas vraiment : il reste l'autre moitié.
Est-ce que dans la requête source, il y a moyen de renvoyer une concaténation auteur+thème qui respecte une condition du genre "ne pas doubler un auteur ou un thème" ?
En effet, ça enlève la moitié des répétitions. Mais ça ne me satisfait pas vraiment : il reste l'autre moitié.
Est-ce que dans la requête source, il y a moyen de renvoyer une concaténation auteur+thème qui respecte une condition du genre "ne pas doubler un auteur ou un thème" ?
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Eviter les redondances dans un rapport
Bonsoir
Voir [Base] Contournement Group_Concat
Une solution éventuelle en SQL direct à partir de ta base A+
Voir [Base] Contournement Group_Concat
Une solution éventuelle en SQL direct à partir de ta base A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
Intéressant, ton lien,
Je regarde ce que je peux en faire, et je reviens (mais pas tout de suite)
Je regarde ce que je peux en faire, et je reviens (mais pas tout de suite)
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: Eviter les redondances dans un rapport
Bonjour
Pour éviter toutes redondances, tu peux à partir de la requête rConcatThemes créer ce type de rapport en effectuant un regroupement sur chaque champ.et en mettant à 0 la hauteur de la section détail. Il serait également possible d'appliquer le principe des thèmes aux auteurs pour les avoir sur une seul ligne. A+
Pour éviter toutes redondances, tu peux à partir de la requête rConcatThemes créer ce type de rapport en effectuant un regroupement sur chaque champ.et en mettant à 0 la hauteur de la section détail. Il serait également possible d'appliquer le principe des thèmes aux auteurs pour les avoir sur une seul ligne. A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
Bonsoir Piaf,
Parfait ! c'est pile ce que je souhaitais
Je ne connaissais pas le concept de vue. Ca a aussi résolu ailleurs d'autres problèmes que j'avais en appelant des requêtes depuis d'autres requêtes. Merci pour ce nouvel outil !
Pour aller plus loin, et avant un [Résolu], 2 questions...
Pour concaténer les champs auteur et thème par ordre alphabetique, y-a-t-il une solution autre qu'un balayage et une boucle dans une macro ?
Même question pour concaténer N (maximum de GroupeTheme) themes , à la place de 2 ou 4) ?
... et une remarque : Pourquoi avoir modifié la table REL_ARTICLE_THEME (2 colonnes, double clé primaire (maClayStone.odb)--> 3 colonne 1 clé primaire (taClayStone.odb)) ?
Ta solution semble fonctionner aussi avec ma table REL_ARTICLE_THEME à 2 colonnes, (et ça m'arrange !) en selectionnant ref_theme (et pas IdArtThem)
Parfait ! c'est pile ce que je souhaitais
Je ne connaissais pas le concept de vue. Ca a aussi résolu ailleurs d'autres problèmes que j'avais en appelant des requêtes depuis d'autres requêtes. Merci pour ce nouvel outil !
Pour aller plus loin, et avant un [Résolu], 2 questions...
Pour concaténer les champs auteur et thème par ordre alphabetique, y-a-t-il une solution autre qu'un balayage et une boucle dans une macro ?
Ajout : Oui, j’ai trouvé une solution que je détaille ici |
... et une remarque : Pourquoi avoir modifié la table REL_ARTICLE_THEME (2 colonnes, double clé primaire (maClayStone.odb)--> 3 colonne 1 clé primaire (taClayStone.odb)) ?
Ta solution semble fonctionner aussi avec ma table REL_ARTICLE_THEME à 2 colonnes, (et ça m'arrange !) en selectionnant ref_theme (et pas IdArtThem)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par ClayStone le 26 juin 2018 10:22, modifié 1 fois.
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: Eviter les redondances dans un rapport
Bonjour,
La règle n° 7 stipule qu'il ne faut mettre qu'une question par fil.
Poser plusieurs questions complique la compréhension et n'encourage pas les réponses : il vaut donc mieux découper votre problème. Le titre de votre question ne peut pas refléter l'ensemble des problèmes exposés.
Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fils que de questions.
Merci de votre collaboration.
Non, non. Après la réponse que vous recevrez suite àClayStone a écrit :Pour aller plus loin, et avant un [Résolu], 2 questions
, vous clôturez ce sujet en en ouvrez autant que vous avez de questions à poser.ClayStone a écrit :et une remarque
La règle n° 7 stipule qu'il ne faut mettre qu'une question par fil.
Poser plusieurs questions complique la compréhension et n'encourage pas les réponses : il vaut donc mieux découper votre problème. Le titre de votre question ne peut pas refléter l'ensemble des problèmes exposés.
Afin que nous puissions avoir une base de connaissance efficace lors d'une recherche sur un seul de vos problèmes, nous vous prions de créer autant de fils que de questions.
Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- Membre lOOyal
- Messages : 36
- Inscription : 13 mars 2017 07:20
Re: Eviter les redondances dans un rapport
Désolé Grand Sachem (micmac... ok )
C'est noté,
Comme tout fonctionne comme je le souhaite, le balise le sujet [résolu]
et à bientôt sur un autre sujet
C'est noté,
Comme tout fonctionne comme je le souhaite, le balise le sujet [résolu]
et à bientôt sur un autre sujet
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.