Puedes usar esta solución:
SELECT b.filename
FROM posts a
INNER JOIN images b ON FIND_IN_SET(b.imageid, a.gallery) > 0
WHERE a.postid = 3
Sin embargo, realmente deberías normalizar tu diseño y usar una tabla de referencias cruzadas entre publicaciones e imágenes. Esta sería la mejor y más eficiente forma de representar relaciones N:M (muchos a muchos). No solo es mucho más eficiente para la recuperación, sino que simplificará enormemente la actualización y borrar asociaciones de imágenes.
Incluso si representó correctamente la relación N:M con una tabla de referencias cruzadas, aún puede obtener el imageid
en formato CSV:
Suponga que tiene un posts_has_images
tabla con campos de clave principal (postid
, imageid
):
Puedes usar GROUP_CONCAT()
para obtener un CSV del imageid
para cada postid
:
SELECT postid, GROUP_CONCAT(imageid) AS gallery
FROM posts_has_images
GROUP BY postid