Tema: concatenar
Ver Mensaje Individual
  #9 (permalink)  
Antiguo 30/04/2009, 10:29
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: concatenar

gracias, amigo huesos52, pero he tenido que editar para añadir la posibilidad de que de un grado no haya nadie, y recurrir al right join, y controlar, mediante IFNULL, el NULL que sale. Lo convierto en 0. Dieguicho, no creo que tengas problemas con el group_concat (que existe desde la versión 4.1 en adelante), porque el número de grados no será muy amplio (group_concat tiene limitación, 1024 caracteres por defecto). En cuanto al aviso sobre el CAST... AS CHAR, es cierto que no es necesario por consola, pero no he probado a ver qué ocurre si lanzas la consulta desde PHP, y bueno es avisar en estos casos.
Sin el cast, que es lo que corresponde a este foro de MySQL, quedaría así:
Código sql:
Ver original
  1. SELECT group_concat( t1.nombre
  2. SEPARATOR ' | ' ) grado,  group_concat( t1.tot
  3. SEPARATOR ' | ' ) cantidades
  4. FROM (
  5.  
  6. SELECT alumnos.id_grado grado, grados.nombre nombre, IFNULL(COUNT( alumnos.id ),'0') tot
  7. FROM alumnos
  8. RIGHT JOIN grados ON grados.id = alumnos.id_grado
  9. GROUP BY id_grado ORDER BY grados.id
  10. )t1

Y para finalizar añado que datos como estos se sacan perfectamente con esta consulta:
SELECT alumnos.id_grado grado, grados.nombre GRADOS, IFNULL(count( alumnos.id ),'0') cantidades FROM alumnos RIGHT JOIN grados ON grados.id = alumnos.id_grado GROUP BY id_grado ORDER BY grados.id
y luego basta con usar la programación para presentarlos como quieras, me refiero a unirlos en una cadena con ese separador.

Última edición por jurena; 30/04/2009 a las 11:09