Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/04/2015, 22:48
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Consulta con 3 tablas relacionadas y GROUP_CONCAT

Hola, quisiera realizar una consulta que corresponde a la busqueda de archivos multimedia dada la coincidencia con al menos 1 de sus tags.

Mis 3 tablas son las siguientes:

MEDIAS
[ID]
[ARCHIVO]

MEDIAS-TAGS
[ID]
[ID_MEDIA] (FK MEDIAS.ID)
[ID_TAG] (FK TAGS.ID)

TAGS
[ID]
[DESC]

El caso ideal sería que dada la DESC de un tag, retorne todos los MEDIAS que contengan el tag en cuestión. Es fundamental que que la consulta devuelva en un campo, mediante GROUP_CONCAT, la union de todos los TAGS correspondientes a ese MEDIA.

Lo que se me ocurre hacer es lo siguiente, pero solo me devuelve el el tag que coincide con la busqueda, en lugar de todos los tags pertenecientes al MEDIA:

Código MySQL:
Ver original
  1. SELECT medias.id, GROUP_CONCAT(tags.desc) AS tagl
  2. FROM medias
  3. JOIN medias_tags ON medias.id = medias_tags.id_media
  4. JOIN tags ON medias_tags.id_tag = tags.id
  5. WHERE tags.desc LIKE '%tn%'
  6. GROUP BY medias.id

Para aclarar un poco mas, el/los registros a devolver deberían estar formados del siguiente modo:

tag.desc a buscar: "tn"

resultado de la query:
[
{"id":"1225","tagl":"pdf,t3,t2,tn"},
{"id":"468","tagl":"video,tn"},
{....}
]

De momento lo estoy haciendo mediante 2 consultas, la primera me devuelve todos los IDs de los MEDIAS que contienen ese tag.desc y, mediante una segunda consulta, capturo todos los tags que corresponden a ese MEDIA.

Cualquier sugerencia es bienvenida

Gracias!

Última edición por Ktulu; 21/04/2015 a las 23:04