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énation plusieurs lignes


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 66
    Points
    66
    Par défaut Concaténation plusieurs lignes
    Bonjour,
    Je vous explique rapidement mon problème:
    J'ai 3 tables, users, groups, et une table de liaison users_groups.
    - users
    --- id (int)
    --- login (varchar)
    - users_groups
    --- id_users (int)
    --- id_group (int)
    - groups
    --- id_group (int)
    --- name (varchar)

    J'aimerai renvoyer les noms des groupes de l'utilisateur, sur la même ligne que le login:
    login-------groupes
    toto-------admin, redacteur, moderateur
    titi-------redacteur, moderateur
    tata-------moderateur
    lulu-------invites
    lolo-------invites

    Pour l'instant, j'arrive à çà:
    login-------groupes
    toto-------admin
    toto-------redacteur
    toto-------moderateur
    titi-------redacteur
    titi-------moderateur
    tata-------moderateur
    lulu-------invites
    lolo-------invites

    J'aimerai concaténer les groupes de chaque utilisateurs.

    Merci

    Mathieu

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Sujet traité environ deux fois par semaine, un peu de recherche vous conduirait ici par exemple :
    http://www.developpez.net/forums/d68...ener-resultat/

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Je dois pas savoir chercher alors...
    J'ai trouvé aucune solution... Dans le lien que tu me donne, je peux pas l'adapter car c'est pleins d'id en dur, c'est limité en résultat.
    Et les autres résultats, je tombe sur du VBA... ou pas de réponse...

    Je cherche du coté de la récursivité, ça doit être la solution, mais je connais pas du tout encore.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Précisez aussi votre SGBD, MySQL a une solution toute faite par exemple.

  5. #5
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    ah oui, désolé, je suis sur du MySQL.
    Une solution toute faite? Ca m'intérrésse

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388

  7. #7
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    yes merci beacoup!

    SELECT u.login, GROUP_CONCAT(g.name)
    FROM users AS u
    LEFT JOIN user_group AS ug ON u.id = ug.id
    LEFT JOIN group AS g ON ug.id = g.id
    GROUP BY u.login
    Ca marche nickel, merci

    Mathieu

  8. #8
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Et histoire de faire les choses encore mieux :
    SELECT u.login, GROUP_CONCAT(g.name ORDER BY g.id ASC SEPARATOR ', ' ) AS groupes
    FROM users AS u
    LEFT JOIN user_group AS ug ON u.id = ug.id
    LEFT JOIN group AS g ON ug.id = g.id
    GROUP BY u.login
    Merci encore.

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

Discussions similaires

  1. Concaténer plusieurs lignes sous condition
    Par Melanie_DIR7 dans le forum Excel
    Réponses: 13
    Dernier message: 29/01/2017, 10h39
  2. Concaténer plusieurs lignes selon une condition
    Par AJ_ing dans le forum Shell et commandes GNU
    Réponses: 29
    Dernier message: 31/08/2012, 09h51
  3. concaténer plusieurs lignes dans un champs
    Par papoulouis dans le forum SQL
    Réponses: 10
    Dernier message: 30/01/2009, 20h08
  4. "concaténer" plusieurs lignes dans un seul champ
    Par djobert dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/12/2008, 18h00
  5. Concaténer plusieurs ligne d'une m^me table
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/08/2008, 16h13

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