Hola truman_truman:
No le veo mucho caso a querer concatenar el resultado desde la consulta, si el objetivo es meramente visual, lo puedes hacer mediante programación, recuperando cada campo por separado y mostrándolos todos al mismo tiempo, pero bueno esa es otra historia... vayamos con la consulta.
Lo ideal es que tuvieras un catálogo con las descripciones para cada tipo de usuario, de tal manera que pudieras hacer un INNER JOIN y simplemente incluir el campo en el SELECT, es decir, algo como esto:
Código MySQL:
Ver original+------------+-----------------+----------+-------------+
| id_usuario | id_tipo_usuario | nombre | apellido |
+------------+-----------------+----------+-------------+
| 1 | 1 | Roberto | Gomez |
| 2 | 1 | Carlos | Peresoso |
| 3 | 2 | Raquel | sarasa |
| 4 | 3 | Manolito | Urquirezaga |
+------------+-----------------+----------+-------------+
+-----------------+----------------+
| id_tipo_usuario | descripcion |
+-----------------+----------------+
| 1 | Administrador |
| 2 | Moderador |
+-----------------+----------------+
-> U.apellido) nombre
-> INNER JOIN tipos_usuarios TU
ON U.id_tipo_usuario
= TU.id_tipo_usuario
; +--------------------------------------+
| nombre |
+--------------------------------------+
| Administrador: Roberto Gomez |
| Administrador: Carlos Peresoso |
| Moderador: Raquel sarasa |
| Usuario
simple: Manolito Urquirezaga
| +--------------------------------------+
Esta es la forma ideal de hacerlo. Ahora bien, si no tienes en una tabla las descripciones para cada tipo de usuario, puedes utilizar un CASE-WHEN, en su forma simple:
Código SQL:
Ver originalmysql> SELECT CONCAT_WS(' ',
-> CASE id_tipo_usuario
-> WHEN 1 THEN 'Administrador:'
-> WHEN 2 THEN 'Moderador:'
-> WHEN 3 THEN 'Usuario simple:'
-> END,
-> U.nombre, U.apellido) nombre
-> FROM usuarios U;
+--------------------------------------+
| nombre |
+--------------------------------------+
| Administrador: Roberto Gomez |
| Administrador: Carlos Peresoso |
| Moderador: Raquel sarasa |
| Usuario simple: Manolito Urquirezaga |
+--------------------------------------+
4 ROWS IN SET (0.02 sec)
El resultado es el mismo, pero la consulta no es óptima... Dale un vistazo a las consultas y nos comentas.
NOTA IMPORTANTE: Al inicio de tu post mencionas que estás utilizando un GROUP CONCAT, mucho ojo, pues esa función no sirve para concatenar varios campos en uno solo, sino que agrupa varios registros en uno solo:
Código MySQL:
Ver original+----------------------+
+----------------------+
| Roberto,Carlos |
| Raquel |
| Manolito |
+----------------------+
Observa que lo que hace la consulta es agrupar por TIPO DE USUARIO, por lo tanto ROBERTO Y CARLOS que son administradores quedan en un mismo registro. Dale un vistazo a la documentación de funciones con cadena para ver uso y diferencias.
Saludos
Leo.