GROUP BY, ¿para qué sirve Agrupar Datos en una Tabla Mysql? La sentencia group by sirve para agrupar datos, según un determinado criterio, y aplicar operaciones sobre los elementos del conjunto conformado. La definición resulta un poco confusa, por lo tanto veamos la utilidad que tiene la consulta group by a través de un ejemplo práctico. Supongamos que ahora nos interesa saber la cantidad de servicios que brinda una determinada empresa. Retomando la definición teórica que vimos al inicio, la solución a esta consigna podríamos pensarla de la siguiente manera: Conformaremos un grupo (agrupar datos) por cada empresa (criterio) y dentro de cada grupo contabilizaremos (operación) la cantidad de servicios que ofrece. Nuestra consulta mysql quedaría así: select Empresas.Nombre,Servicios.Servicio,count(*) as CantidadServicios from Empresas inner join Servicios on Empresas.Id=Servicios.IdEmpresa group by IdEmpresa Observemos que en la línea número 4 especificamos la consulta group by. Es muy importante respetar el orden de las sentencias mysql (select, from, inner join, group by, etc). Por ejemplo, si haríamos el group by antes del inner join no funcionaria como deseamos. En el group by especificamos “IdEmpresa”. Este vendría a ser el criterio por el cual deseamos agrupar las filas; en nuestro caso deseamos agrupar todas las filas que correspondan a la misma empresa. Una vez que tenemos armados los grupos, contabilizamos las filas que contiene cada uno. Esto lo hacemos en la línea 1 de nuestra consulta mysql mediante count(*) y volcamos el resultado del conteo dentro del campo “CantidadServicios”. Cada grupo representará una fila en el resultado final de nuestra consulta mysql group by. Y como hemos aprendido previamente podemos utilizar la sentencia mysql_fetch_array para imprimir en pantalla los resultados de una consulta msyql. Finalmente el código fuente php completo quedaría de la siguiente manera: // Conexión a base de datos Mysql $conexion=mysql_connect('localhost','Tu-Usuario-Mysql','Contraseña-de-tuUsuario-Mysql'); mysql_select_db('Nombre-de-tu-Base-de-datos-Mysql',$conexion); // Consulta Mysql donde aplicamos GROUP BY $consulta_mysql="select Empresas.Nombre,Servicios.Servicio,count(*) as CantidadServicios from Empresas inner join Servicios on Empresas.Id=Servicios.IdEmpresa group by IdEmpresa"; $resultado_consulta_mysql=mysql_query($consulta_mysql,$conexion); // Imprimimos en pantalla los resultados de nuestra consulta mysql while($fila=mysql_fetch_array($resultado_consulta_mysql)){ echo "La empresa ".$fila['Nombre']." ofrece ".$fila['CantidadServicios']." a sus clientes. "; } En este caso nos interesaba “contar” la cantidad de filas que conformaban cada grupo. Pero también se pueden efectuar otras operaciones. Una operación muy utilizada es sum y sirve para efectuar sumatorias de valores contenidos en un grupo, la operación sum del group by nos servirá para calcular el importe total por ejemplo de la compra en el carrito del cliente (estaríamos haciendo una sumatoria de los importes de cada ítem). www.asociacionaepi.es