Blog de Gonzalo

MODIFICADOR ROLLUP DE MYSQL

Muchas veces se realizan consultas MySQL para mostrar totales, por ejemplo, totales por categoría y es fácil hacerlo usando el agregador count de MySQL por ejemplo con mi blog:


SELECT categoria,count(*) FROM categorias
INNER JOIN articulos ON categorias.id = articulos.id_categoria
GROUP BY categoria;
Con la query anterior se muestran todas las categorías con el total de artículos de cada categoría pero hay veces que se necesita un total general y se suele hacer en programación o añadiendo líneas a la query.
Pero añadiendo el agregador rollup lo añade de manera automática y la query quedaría:

SELECT categoria,count(*) FROM categorias
INNER JOIN articulos ON categorias.id = articulos.id_categoria 
GROUP BY categoria  WITH ROLLUP;
Cuando se añaden más columnas al GROUP BY y cuando existe un cambio de valor añade una fila total.
Cuando se usa el modificador rollup muestra el total pero con el título como "null" para evitar ésto hay que usar la función "COALESCE" de mysql:

SELECT COALESCE(categoria, 'Todas las categorías') AS categoria,count(*) FROM categorias
INNER JOIN articulos ON categorias.id = articulos.id_categoria 
GROUP BY categoria  WITH ROLLUP;
Os aconsejo leer el post sobre la función coalesce en mysql

Compartir en twitter