GROUP_CONCAT de MySql, Concatenar N resultados en uno solo

GROUP_CONCAT es una función muy útil, si queremos concatenar los resultados en un solo campo, al momento de realizar una consulta.

Mejor veamos un ejemplo para comprender su utilidad

Requerimos un reporte de las etiquetas por post, el reporte es de la siguiente manera:

GROUP_CONCAT

Tenemos la siguiente tabla de etiquetas por cada post, y queremos tener un reporte/listado por cada post emitido.

La consulta común seria:

SELECT post_id, tag FROM etiquetas GROUP BY post_id, tag

Sin GROUP_CONCAT

Con esta consulta tenemos lo requerido, sin embargo tendríamos que procesar la información para mostrarla como la requerimos, sea el lenguaje que sea, recorreríamos las filas del resultado y las agregaríamos a un arreglo según el post_id, o podemos concatenar,  o ya con el arreglo aplicar un Explode (en PHP), hay muchas formas.

Es aquí donde entra GROUP_CONCAT, el cual nos ahorrara trabajo en la programación

SELECT post_id, GROUP_CONCAT(tag SEPARATOR ‘, ‘) AS ‘Tags’ FROM etiquetas GROUP BY post_id

GROUP_CONCAT

GROUP_CONCAT(tag SEPARATOR ‘, ‘) estamos indicando que las etiquetas estaran separadas por una coma (,), pero podemos usar otro caractes, ya con esto las mostramos directamente en el reporte o bien, podemos convertirlas a un array, usando el mismo delimitador (split PHP).

Aveces requerimos de ciertas funcionalidades, que sabemos o intuimos que deben existir ya sea en mysql o en algún lenguaje de programación,el problema es que no sabemos como se llama, para buscar ayuda.

y esto es mas frustrante que la búsqueda.

de echo no encontré un buen titulo para el post

Me parece que la longitud máxima de la cadena que concatena es de 1024, pero se puede configurar a una longitud mayor.

 

Documentación en Mysql

En stackoverflow encontre algo de ayuda

Un enlace de interes

Leave a Reply

Your email address will not be published. Required fields are marked *