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

MySQL Discussion :

GROUP BY avec chaînes de mots séparés par des virgules


Sujet :

MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut GROUP BY avec chaînes de mots séparés par des virgules
    Bonjour à tous !

    Je cherche à faire un SELECT qui me sort les tags de produits mais uniquement une fois, cependant mes tags sont associés à chaque produit dans une colonne, séparés par des virgules, soit :

    id_produit tags
    1 45 extérieur
    2 46
    2 47 extérieur,décoration

    Auriez-vous une idée des fonctions à utiliser pour obtenir :

    tags
    1 extérieur
    2 décoration

    Merci de votre lecture

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select
      SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name
    from
      (select 1 n union all
       select 2 union all select 3 union all
       select 4 union all select 5) numbers INNER JOIN tablename
      on CHAR_LENGTH(tablename.name)
         -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1
      group by n

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Tes tables sont mal fichues, tu ne poserais même pas cette question si tu avais un design avec une table pour les tags, une table pour les produits et une table qui fait le lien entre produits et tags via leur clefs primaires respectives, exemple:

    Table pour les produits:
    id_produit nom_produit
    46 machin
    47 bidule
    48 truc

    Table pour les tags:
    id_tag nom_tag
    1 extérieur
    2 décoration
    3 bachibouzouk

    Table qui fait la liaison entre les produits et les tags via des clefs étrangères (fk = foreign key):
    fk_id_produit fk_id_tag
    46 1
    47 1
    47 2

    Avec ce design, il suffit de faire une jointure pour obtenir les tags d'un produit, quant à ta question initiale, c'est simplement le contenu de la table tags.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Je connais les jointures merci, pas besoin de critiquer la structure des tables. Mais bon vous êtes pas le premier à juger de telle sorte sur ce forum.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    C'est au contraire tout à fait légitime de critiquer cette modélisation !
    C'est un viol de la première forme normale qui met en péril l'intégrité des données et les performances.

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

Discussions similaires

  1. Extraire nombres d'une chaîne de caractères séparés par des "/"
    Par olive1007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2014, 16h53
  2. Réponses: 0
    Dernier message: 14/08/2012, 08h03
  3. [XL-2003] Extraire Mots séparé par des virgules
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 04/05/2011, 18h15
  4. Lignes d'une colone séparés par des virgules.
    Par Wahid.Net dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/02/2008, 01h47
  5. [SQL] Id séparés par des virgules et requête de sélection
    Par Emotion dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/09/2007, 23h48

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