Caminando hacia la Ingeniería Informática
Programación
MySQL: GROUP_CONCAT
26 Feb
Por mi trabajo, tengo que aprender a utilizar nuevas funciones de librerias C++ que antes no conocía, nuevos programas como Crystal Reports (para la creación de informes), nuevas funciones MySQL, …
Por ello me parece interesante dar a conocer funciones que aunque pueden considerarse un tanto inusuales, creo que soy un claro ejemplo de que puedes necesitarla en algún momento y si tienes algún apoyo mejor que mejor ¿no?
Ayer conocí la función GROUP_CONCAT de SQL, esta función devuelve en un único string, la concatenación de los valores no nulos de un grupo, por lo que como es imaginable, siempre va con un GROUP BY, si esta función devolviese NULL sería por que no hay ese grupo no contiene elementos no nulos. La sintaxis es:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
Donde separator es el separador entre Strings que quieres poner, una coma, una coma y un espacio, … y el resto de elementos deben de ser conocidos por cualquiera con conocimientos mínimos sobre el proceso de consultas SQL.
Un ejemplo mas o menos real…
SELECT act.actuacion_id, act.actuacion_nombre, GROUP_CONCAT(empl.nombre_empleado SEPARATOR ', ') AS contactos FROM actuaciones act LEFT JOIN actuaciones_vs_empleados acvsempl ON acvsempl.actuacion_id=actuacion_id LEFT JOIN empleados empl ON acvsempl.empleado_id=empleado_id GROUP BY act.actuacion_id
Supongamos que hay tres tablas, una de actuaciones (una actuacion se refiere genericamente a algo que hace alguien), otra actuaciones_vs_empleados que guarda la relación entre una actuación y los empleados de nuestra empresa que la realizan y una tercera tabla empleados que contiene información sobre estos empleados.
Pues bien, esta función nos permite obtener en una misma columna, todos los empleados asociados a una actuación, como resultado de la secuencia anterior obtendríamos algo como …
actuacion_id | actuacion_nombre | contactos
1 | Actuación A | Antonio Pérez, Carmen Jiménez
2 | Actuación B | Marisa Paredes, Javier Bardem
Esta función resulta útil para mostrar, por ejemplo, en una diálogo de busqueda, información extra ubicada fuera de la tabla que se está utilizando en ese momento, pero que es importante conocer.
![Esta obra está bajo una licencia de Creative Commons [01] Creative Commons](http://i.creativecommons.org/l/by-nc-sa/2.5/es/80x15.png)
![[21] Geo Visitors Map](http://geo.digitalpoint.com/a.png)