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

Langage SQL Discussion :

Concaténer le résultat d'une jointure dans un champ


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut Concaténer le résultat d'une jointure dans un champ
    Bonjour,

    J'utilise postgresql et je souhaiterais concaténer dans un champ le résultat d'une jointure. Je m'explique :

    J'ai une table A qui contient par exemple un ID (ID_A).

    J'ai une table B qui a un ID (ID_B), une clef étrangère vers A (A_FK) et un attribut (ATTR).

    Dans la table A, j'ai 1 enregistrement l'ID_A (ID_A = 1)

    Dans la table B, j'ai 3 enregistrements qui font référence à l'ID_A = 1, avec dans ces enregistrements :
    - l'attribut du 1er enregistrement qui vaut XXX
    - l'attribut du 2e enregistrement qui vaut YYY
    - l'attribut du 23e enregistrement qui vaut ZZZ

    Je voudrais faire une requête qui me retourne 1 seul enregistrement :
    ID_A = 1
    Colonne = XXX;YYY;ZZZ

    Je voudrais concaténer les attributs avec comme séparateur le point-virgule.

    Sauriez-vous m'aider ou m'orienter svp ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Avec MySQL j'aurai proposé GROUP_CONCAT

    Avec d'autres SGBD,
    - soit vous faites autant de jointures qu'il y a d'occurrences possibles et concaténez les résultat des n jointures : valable si 2 à 3 valeurs maxi, sinon c'est pénible à écrire et peu performant
    - soit vous faites une requête récursive, ce n'est pas performant non plus, mais ça permet de gérer les cas où il peut y avoir un grand nombre d'occurrences dans la table B

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    bonjour,

    Sous PG, vous pouvez utiliser string_agg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A_FK, string_agg(ATTR, ';')
    FROM A
    GROUP BY A_FK

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Bonjour Escartefigue et aieeeuuuuu,

    Je vous remercie d'avoir répondu à ma question !

    Citation Envoyé par aieeeuuuuu Voir le message
    bonjour,

    Sous PG, vous pouvez utiliser string_agg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A_FK, string_agg(ATTR, ';')
    FROM A
    GROUP BY A_FK
    Aieeeuuuuu, c'est formidable, ça fonctionne parfaitement !! Je vous remercie beaucoup pour votre aide !

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

Discussions similaires

  1. [AC-2007] afficher le résultat d'une opération dans un champ
    Par gentelmand dans le forum Access
    Réponses: 2
    Dernier message: 01/06/2010, 16h38
  2. [WD14] Récupérer le résultat d'une requête dans un champ de saisie
    Par Aenur56 dans le forum WinDev
    Réponses: 4
    Dernier message: 03/05/2010, 16h41
  3. Réponses: 2
    Dernier message: 04/03/2008, 10h10
  4. placer une résultat d'une requete dans un champs
    Par valaidnew dans le forum Access
    Réponses: 5
    Dernier message: 03/03/2006, 10h34
  5. Réponses: 1
    Dernier message: 29/09/2005, 12h05

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