Ma question est assez similaire à MySQL: is it possible to group_concat multiple rows?, mais je n'arrive pas à comprendre comment fonctionne la concat de groupe.MySQL - GROUP_CONCAT avec jointures
Mon jeu de données réel serait difficile à expliquer - j'utiliserai un ensemble simplifié de tables et de relations à titre d'exemple.
dire que j'ai une table photos
id filename
1 bob.jpg
2. ken.png
3. lisa.jpg
4. jim.jpg
...
et une table tags
id title
1 family
2 friends
3 school
4 california
...
et un pont appelé photo_tags
photo tag
1 2
1 3
1 4
2 1
3 1
et je veux revenir des lignes comme ceci:
photo_id filename tags
1 bob.jpg 2,3,4
2 ken.png 1
3 lisa.jpg 1
4 jim.jpg (NULL)
ou ...
photo_id filename tags
1 bob.jpg friends,school,california
2 ken.png family
3 lisa.jpg family
4 jim.jpg (NULL)
Mon estimation initiale était quelque chose comme ceci:
SELECT photos.filename,
GROUP_CONCAT(photo_tags.tag) AS associated_tags
FROM photos
LEFT OUTER JOIN tags
ON tags.photo = photos.id
GROUP BY photo_tags.tag
Mais (probablement évident pour quelqu'un qui sait ce qu'ils font), qui n » ai pas t travail. Après avoir fait quelques recherches, et faisant référence au lien ci-dessus, j'ai essayé diverses permutations de cette:
SELECT
file_name,
GROUP_CONCAT(photo_tag_ids) AS associated_tags
FROM (
SELECT
photos.filename AS file_name,
photo_tags.tag AS photo_tag_ids
FROM
photos
INNER JOIN photo_tags
ON photo_tags.photo= photos.id
) whatever
GROUP BY file_name
ORDER BY file_name;
TYIA.
fonctionne, merci. Il se trouve que j'avais essayé, mais l'interface utilisateur (sqlyog) ne montre pas les valeurs concaténées pour des raisons inconnues. J'accepterai dès que je le pourrai (4 minutes). – momo