Vous pouvez utiliser cette solution :
SELECT b.filename
FROM posts a
INNER JOIN images b ON FIND_IN_SET(b.imageid, a.gallery) > 0
WHERE a.postid = 3
Cependant, vous devriez vraiment normaliser votre conception et utiliser une table de correspondance entre les messages et les images. Ce serait le moyen le meilleur et le plus efficace de représenter les relations N:M (plusieurs à plusieurs). Non seulement c'est beaucoup plus efficace pour la récupération, mais cela simplifiera grandement la mise à jour et supprimer associations d'images.
Même si vous avez correctement représenté la relation N:M avec une table de références croisées, vous pouvez toujours obtenir le imageid
au format CSV :
Supposons que vous ayez un posts_has_images
table avec les champs de clé primaire (postid
, imageid
):
Vous pouvez utiliser GROUP_CONCAT()
pour obtenir un CSV de l'imageid
's pour chaque postid
:
SELECT postid, GROUP_CONCAT(imageid) AS gallery
FROM posts_has_images
GROUP BY postid