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 :

[Access 2002] Suppression de doublons et concaténation


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut [Access 2002] Suppression de doublons et concaténation
    Bonjour,

    Le cas que je n'ai pas pu résoudre jusqu'à présent -malgré un certain nombre d'heures déjà passées sur le sujet- est le suivant: la base de données se trouvant dans le fichier annexe contient 2 tables utilisées pour la création d'une requête de type "Sélection". Actuellement, le résultat de la requête est le suivant pour les colonnes suivantes 'StmtEntryID', 'StmtEntryCcy', 'StmtEntryAmt' et 'StmtEntryNarrText':
    1 | EUR | 123.45 | Narr 1.1
    1 | EUR | 123.45 | Narr 1.2
    2 | USD | 234.56 | Narr 2.1
    3 | GBP | 345.67 | Narr 3.1
    3 | GBP | 345.67 | Narr 3.2
    3 | GBP | 345.67 | Narr 3.3
    4 | EUR | 456.78 | Narr 4.1
    4 | EUR | 456.78 | Narr 4.2
    5 | CHF | 567.89 | Narr 5.1

    mais je souhaiterais arriver au résultat suivant (toujours avec 4 colonnes) sans avoir à créer de requête(s) intermédiaire(s):
    1 | EUR | 123.45 | Narr 1.1 Narr 1.2
    2 | USD | 234.56 | Narr 2.1
    3 | GBP | 345.67 | Narr 3.1 Narr 3.2 Narr 3.3
    4 | EUR | 456.78 | Narr 4.1 Narr 4.2
    5 | CHF | 567.89 | Narr 5.1
    qui se caractérise ainsi par rapport au résultat actuel:
    - affichage d'une seule ligne par 'StmtEntryID' et
    - concaténation des différents 'StmtEntryNarrText' (séparés par un espace) dont le nombre peut varier d'un 'StmtEntryID' à l'autre.

    Pour info, la modification de la structure des tables n'est pas une option envisageable.

    Quelqu'un est-il susceptible de m'aider en m'indiquant la bonne direction? D'avance merci!

    Loris
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par loris Voir le message
    mais je souhaiterais arriver au résultat suivant (toujours avec 4 colonnes) sans avoir à créer de requête(s) intermédiaire(s):
    Dans ce cas il faut le faire manuellement.

    Plus sérieusement, il y a heureusement des solutions, mais il faut un peu de code.

    Je vais te donner le lien vers la partie requête de nos pages sources d'Access, tu devrais trouver des choses qui te donnerons des pistes. http://access.developpez.com/sources/?page=Requete, la première source devrait faire l'affaire.

    Starec

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    une alternative :
    1) utiliser la fonction VBA générique suivante en la placant dans un module du projet (Référencer DAO) :
    http://www.developpez.net/forums/sho...d.php?t=423317

    2) Deux requêtes possibles
    --------------------------
    * Requete sans ajout de colonne, dérivée de la votre mais lente :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    SELECT
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt,
     ConcatColonne(INT(tblStmtEntry.StmtEntryNarrId),
     "INT(StmtEntryNarrId)",
     "StmtEntryNarrText",
     "tblStmtEntryNarr",
     "",
     FALSE,
     NULL,
     " ") AS NarrTexts
    FROM
     tblStmtEntry
    INNER JOIN
     tblStmtEntryNarr
     ON
      tblStmtEntry.StmtEntryNarrID = tblStmtEntryNarr.StmtEntryNarrID
    GROUP BY
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt,
     ConcatColonne(INT(tblStmtEntry.StmtEntryNarrId),
     "INT(StmtEntryNarrId)",
     "StmtEntryNarrText",
     "tblStmtEntryNarr",
     "",
     FALSE,
     NULL,
     " ");
    *Requete avec ajout d'une colonne mais très rapide :
    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
    16
    17
    18
    19
    20
    21
     
    SELECT
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt,
     ConcatColonne([Pivot],
     "INT(StmtEntryNarrId)",
     "StmtEntryNarrText",
     "tblStmtEntryNarr",
     "",
     FALSE,
     NULL,
     " ") AS NarrTexts,
     INT([StmtEntryNarrID]) AS [Pivot]
    FROM
     tblStmtEntry
    GROUP BY
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt,
     INT([StmtEntryNarrID]);
    A vérifier...

    Bonne journée,

    Philippe

    Ajout
    ------
    Si StmtEntryID est le groupe de StmtEntryNarrId, on peut éviter la colonne supplémentaire :
    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
    16
    17
    18
    19
     
    SELECT
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt,
     ConcatColonne([StmtEntryID],
     "INT(StmtEntryNarrId)",
     "StmtEntryNarrText",
     "tblStmtEntryNarr",
     "",
     FALSE,
     NULL,
     " ") AS NarrTexts
    FROM
     tblStmtEntry
    GROUP BY
     tblStmtEntry.StmtEntryID,
     tblStmtEntry.StmtEntryCcy,
     tblStmtEntry.StmtEntryAmt;

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut [Résolu] [Access 2002] Suppression de doublons et concaténation
    Bonjour,

    Grand merci à Starec et philben pour les promptes et très complètes réponses.

    Je viens de terminer de mettre en place la solution vers laquelle m'a dirigé Starec et le résultat se trouve dans la requête 'qselStmtEntryNew' du fichier annexé pour ceux que cela intéresse. La page où se trouve l'information (http://access.developpez.com/sources/?page=Requete) m'ayant permis de résoudre mon problème est une véritable mine au trésor. Starec, mille mercis pour m'avoir orienté très judicieusement.

    Mon souci étant résolu, je n'ai pas encore eu le temps d'analyser la solution proposée par philben. Nonobstant le fait qu'elle me semble un peu plus complexe que la précédente, je vais l'analyser également et je reviendrai donner mon opinion s'il devait pouvoir profiter à la communauté. Quoiqu'il en soit, un gand merci à philben pour la solution proposée.

    Meilleures salutations.

    Loris
    Fichiers attachés Fichiers attachés

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Quoiqu'il en soit, un gand merci à philben pour la solution proposée
    Si dans le futur votre table doit comporter plus de 500 lignes, gardez ma solution sous le coude qui est plus rapide !

    cordialement,

    Philippe

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  2. [Runtime] - Access 2002
    Par Icetea dans le forum Runtime
    Réponses: 4
    Dernier message: 05/10/2004, 14h03
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04
  5. [LG]Suppression de doublons
    Par moustique31 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2003, 21h03

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