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 :

Supprimer doublons dans une table !


Sujet :

BIRT

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Supprimer doublons dans une table !
    Bonjour,

    Voici l'énoncé :
    J'utilise BIRT 2.3.1
    J'utilise le designer.

    Alors, j'ai une requêtes sur deux bases différentes qui me renvoie le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    +------------------------+------------------------+
    | personneBDD1           |   personneBDD2           
    +------------------------+------------------------+
    |    Toto                          jean                
    |------------------------+------------------------+
    |    Toto                          jack                
    |------------------------+------------------------+
    |    Toto                          michel              
    |------------------------+------------------------+
    |    Toto                          Toto            
    |------------------------+------------------------+
    (Je ne vais pas rentrer dans le détail de pourquoi la requête renvoi un résultat comme cela car fonctionnellement c'est long à expliquer et prend en compte plusieurs tables.)

    Je met ce résultat dans un dataset qu'on va appeller 'Personne'.

    Ce dataset Personne est après mis dans une table qui correspond à la colonne Personne de mon report .

    Mon problème est le suivant :

    Je souhaite afficher dans ma colonne personne le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Si personneBDD1 est NULLE
                 Alors DataSetRow["personneBDD2"]
    SINON
                 Alors DataSetRow["personneBDD1"]
    cela fonctionne bien si la colonne personneBDD1 est nulle je récupère toutes les personnes dans BDD2, sauf que si
    personneBDD1 n'est pas NULL alors je me retrouve avec ce champ répété autant de fois que dans le résultat de la requête (ce qui est normal) ==> du coup je cherche un moyen pour supprimer les doublons à l'aide de BIRT.

    J'ai trouvé un solution en utilisant le row.__rownum => Ainsi si personneBDD1 est non NULL, je récupère uniquement l'élément dont le row.__rownum == 0 !

    Cela marche, mais quand j'exporte mon report sous format xls : la colonne Personne contient bien l'element non dédoublonné mais aussi 3 lignes vides (j'imagine que cela correspond aux lignes non récupérés) ,du coup ce n'est pas terrible quand on veut faire des tris avec excel.

    Je ne sais pas si j'ai été assez clair (je l'espère), n'hésitez à me poser des questions si jamais vous n'avez pas bien compris.

    PS : j'ai essayé aussi de faire un groupe sur l'élément table de la colonne personne mais sans succès.

    Merci par avance pour votre aide ou vos idée

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Pour faire le dédoublonnage au niveau Birt, je ne sais pas si c'est possible. Pour ma part, j'essaierais de le faire faire par ma requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT COALESCE(PersonneBDD1, PersonneBDD2) FROM ...
    Roland

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Salut Roland et merci pour ta réponse,

    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT COALESCE(PersonneBDD1, PersonneBDD2,...,valueN) FROM ...
    Renvoi la première valeur non null d'une liste d'éléments. Ce n'est pas mon besoin.

    En effet, si j'utilise le COALESCE il va s'appliquer sur chaque ligne du résultat dessus donc je me retrouverai toujours avec des lignes dupliquées pour personnesbdd1. Le problème n'est pas quand personneBDD1 est null mais non null

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par S.Lay Voir le message
    En effet, si j'utilise le COALESCE il va s'appliquer sur chaque ligne du résultat dessus donc je me retrouverai toujours avec des lignes dupliquées pour personnesbdd1. Le problème n'est pas quand personneBDD1 est null mais non null
    Effectivement, COALESCE se contente d'appliquer dans la requête le mécanisme que tu mettais en oeuvre dans ta liaison de données. Mais l'intérêt (à mon sens) est que ta requête ne renvoie plus qu'une colonne, et que tu peux appliquer le DISTINCT, qui, à moins que les choses aient bien changé va se charger du dédoublonnage.

    Ceci dit, ne connaissant pas l'ensemble de la requête, il est difficile de dire ce qui se passera exactement.
    Roland

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rsc Voir le message
    Mais l'intérêt (à mon sens) est que ta requête ne renvoie plus qu'une colonne, et que tu peux appliquer le DISTINCT, qui, à moins que les choses aient bien changé va se charger du dédoublonnage.
    Je crois que je n'ai pas bien lu donc saisi au départ, mais en relisant ta réponse, Effectivement ce n'est pas du tout bête je n'y avais pas pensé au départ, mais effectivement un select distinct coalesce(personnebdd1, personnebdd2) ne renverra qu'une seule colonne et si jamais la première est nulle je recupere la deuxième sinon je récupère la première non dupliquée du coup plus besoin d'algo dans le binding ==>Roland, belle astuce merci

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

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. Supprimer des doublons dans une table
    Par jonoz dans le forum SQL
    Réponses: 2
    Dernier message: 12/03/2010, 17h48
  3. Supprimer les doublons dans une table
    Par lelectronique.com dans le forum Requêtes
    Réponses: 7
    Dernier message: 15/10/2008, 14h33
  4. Supprimer les doublons dans une table!
    Par Kirou dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/06/2008, 15h37
  5. Requête pour supprimer des doublons dans une table
    Par nomade333 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2008, 12h48

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