Bonjour,
je souhaite faire une jointure entre trois tables où les champs d'une des tables sont concaténés.
J'ai créé ces trois tables pour la gestion de tags. Voici à quoi elles ressemblent.
Première table 'AUTEURS'
Id ------ Noms
1 ------- Jean
2 ------- Marie
3 ------- David
4 ------- Roger
5 ------- Pierre
Deuxième table 'TAGS'
Id ------ Tag
1 ------ Science-Fiction
2 ------ Histoire
3 ------ Nouvelles
4 ------ Amour
5 ------ Policier
6 ------ Espionnage
7 ------ Horreur
Deuxième table 'LIENS'
Id ------ IdAuteurs ----- IdTags
1 ----------- 1 ------------- 4
2 ----------- 1 ------------- 5
3 ----------- 1 ------------- 7
4 ----------- 2 ------------- 1
5 ----------- 2 ------------- 6
6 ----------- 3 ------------- 3
7 ----------- 4 ------------- 3
8 ----------- 4 ------------- 6
En faisant cette requête :
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT * FROM auteurs AS au INNER JOIN liens AS li ON li.IdAuteurs = au.Id INNER JOIN tags AS ta ON ta.Id = li.IdTags
Jean ------ Amour
Jean ------ Policier
Jean ------ Horreur
Marie ------ Science-Fiction
Marie ------ Espionnage
David ------ Nouvelles
Roger ------ Nouvelles
Roger ------ Espionnage
La requête me sort tous les noms et tous les tags et associe un nom avec un tag
En faisant cette requête :
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM auteurs AS au INNER JOIN liens AS li ON li.IdAuteurs = au.Id INNER JOIN tags AS ta ON ta.Id = li.IdTags GROUP BY au.Id
Jean ------ Horreur
Marie ------ Espionnage
David ------ Nouvelles
Roger ------ Espionnage
Là je n'ai qu'un seul nom mais qu'un seul tag aussi. Et moi j'aimerais obtenir en sortie :
Jean ------ Amour,Policier,Horreur
Marie ------ Science-Fiction,Espionnage
David ------ Nouvelles
Roger ------ Nouvelles,Espionnage
J'aimerais donc concaténer les tags pour les associer au nom correspondant. Existe t-il une méthode avec mysql ?
Maxime
Partager