2010-01-19 5 views
0

J'ai essayé maintenant presque tout ce que je pouvais pour résoudre le problème suivant. Jusqu'à présent, sans succès. Mais il doit y avoir une solution parce que je ne pense pas que le cas soit trop spécial. Je pense que je suis juste un débutant sanglant ;-) Je dois rejoindre union fusion ou quoi que ce soit ;-) dans MySQL pour résoudre le problème suivant ...Problème MySQL: fusionner plusieurs résultats/lignes causés par n-m

CAS: Trois tableaux "posts", "tagmap" et "tags" "

les tagmap table stocke toutes les relations nm les id de pour des postes et les id des balises
les balises stocke la table la tag_name avec le tag id
les messages Table Enregistre le post_title et la post_id

posts post_id post_title 
      1   Charlie Chaplin Painting 

tagmap id   post_id tag_id 
      100  1   12 
      101  1   13 
      102  1   14 

tags  tag_id  tag_name 
      12   Acryl 
      13   Chalk 
      14   Poster 

Ce que je suis en train d'atteindre est d'obtenir un résultat que la follwing où tous les tags associés sont fusionnés dans une colonne. Soit par une liste séparée par des virgules ou des espaces:
post_id => 1, post_title => Charlie Chaplin ... tag_name => acryl, Chalk, Affiche

Mais jusqu'à présent la seule chose que je pourrais obtenir des résultats sont mukltiple comme ceci:
post_id => 1, post_title => Charlie Chaplin ... tag_name => Acryl
post_id => 1, post_title => Charlie Chaplin ... tag_name => Chalk
post_id => 1, post_title => Charlie Chaplin ... tag_name => Affiche

Est-ce que quelqu'un sait comment cela pourrait être ca hieved ... Toute aide serait très apprécié et thx à l'avance à tous ceux qui pourraient me aider ;-) cette cinque

Répondre

2

Utilisation:

SELECT p.post_id, 
     p.post_title, 
     GROUP_CONCAT(t.tag_name ORDER BY t.tag_name SEPARATOR ', ') 
    FROM POSTS p 
    JOIN TAGMAP tm ON tm.post_id = p.post_id 
    JOIN TAGS t ON t.tag_id = tm.tag_id 
GROUP BY p.post_id, p.post_title 

Référence:

+0

Oui, cela semble correct, désolé, je regardais plus d'un résultat UNION X-) –

+0

MERCI TRÈS TRÈS BEAUCOUP ... Je ne peux pas croire que je n'ai pas trouvé que ... J'ai vraiment cherché pendant des heures ... se retrouvant dans des méthodes récursives ou peu importe ... Espéré que ce serait aussi simple. Juste dû ajouter le GROUP_CONCAT et a travaillé comme un charme en quelques secondes ... MERCI !!!! – Bosh

+0

Je l'ai seulement un peu modifié à 0. GROUP_CONCAT ... Comme les étiquettes A facilité la lecture .. MERCI !!! – Bosh