Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Consulta con 3 tablas relacionadas y GROUP_CONCAT

Estas en el tema de Consulta con 3 tablas relacionadas y GROUP_CONCAT en el foro de Mysql en Foros del Web. 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 ...
  #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
  #2 (permalink)  
Antiguo 21/04/2015, 23:21
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Consulta con 3 tablas relacionadas y GROUP_CONCAT

Creo que lo conseguí del siguiente modo, por favor corriganme si me equivoco:

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. GROUP BY medias.id
  6. HAVING tagl LIKE '%t2%' AND tagl LIKE '%t3%'
  #3 (permalink)  
Antiguo 22/04/2015, 06:10
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consulta con 3 tablas relacionadas y GROUP_CONCAT

si lo conseguiste, donde quieres ver correccione???Ademas no tenemos tus datos para poder comparar.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: tablas, tags
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:53.