Ver Mensaje Individual
  #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