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

[SOLUCIONADO] Uso de GROUP_CONCAT

Estas en el tema de Uso de GROUP_CONCAT en el foro de Mysql en Foros del Web. Hola, necesito ayuda con la query para la seleccion de registros utilizando GROUP_CONCAT. Mis tablas son las siguientes (les pongo un pequeño ejemplo del contenido): ...
  #1 (permalink)  
Antiguo 03/04/2015, 10:19
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Uso de GROUP_CONCAT

Hola, necesito ayuda con la query para la seleccion de registros utilizando GROUP_CONCAT.
Mis tablas son las siguientes (les pongo un pequeño ejemplo del contenido):

NOTICIAS
  • ID: 1
    TITULO: 'titulo Noticia 1'
  • ID: 2
    TITULO: 'titulo Noticia 2'

TAGS
  • ID: 1
    ID_NOTICIA: 1
    DESC: 'tag1'
  • ID: 2
    ID_NOTICIA:1
    DESC: 'tag2'
  • ID: 3
    ID_NOTICIA: 1
    DESC: 'tag3'
  • ID:4
    ID_NOTICIA:2
    DESC: 'tag1'
  • ID: 5
    ID_NOTICIA: 2
    DESC: 'tag4'

De momento la consulta que realizo para agrupar todos los tags en una única columna es:
Código MySQL:
Ver original
  1. SELECT noticias.titulo, GROUP_CONCAT(tags.desc)
  2. FROM noticias
  3. JOIN tags ON tags.id_noticia=noticias.id
  4. GROUP BY noticias.id

Lo que me devuele el resultado esperado:
  • TITULO: 'titulo Noticia 1'
    TAGS: 'tag1,tag2,tag3'
  • TITULO: 'titulo Noticia 2'
    TAGS: 'tag1,tag4'

El inconveniente aparece cuando trato de utilizar la cláusula LIKE para filtrar aquellos registros que sólo contengan un determinado tag. Lo que he podido lograr es que filtre correctamente pero en la columna 'tags' solo vuelve el valor filtrado y no todos los tags correspondientes a la noticia.

Acá mi intento de query
Código MySQL:
Ver original
  1. SELECT noticias.titulo, GROUP_CONCAT(tags.desc)
  2. FROM noticias
  3. JOIN tags ON tags.id_noticia=noticias.id
  4. WHERE tags.desc LIKE 'tag1'
  5. GROUP BY noticias.id

Lo que me devuele:
  • TITULO: 'titulo Noticia 1'
    TAGS: 'tag1'
  • TITULO: 'titulo Noticia 2'
    TAGS: 'tag1'

Seguramente sea algo muy simple, pero no logro dar con la consulta correcta. Es posible hacer lo que pido?

Gracias de antemano
  #2 (permalink)  
Antiguo 03/04/2015, 12:29
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Uso de GROUP_CONCAT

Me respondo solo y espero le sirva a alguien mas. Aplicando la cláusula HAVING se soluciona:

Código MySQL:
Ver original
  1. SELECT noticias.titulo, GROUP_CONCAT(tags.desc) AS ntags
  2. FROM noticias
  3. JOIN tags ON tags.id_noticia=noticias.id
  4. GROUP BY noticias.id
  5. HAVING ntags LIKE '%tag3%'

Etiquetas: registro, select, tabla
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 23:25.