Sumar datos de tiempo usando MySQL

Para sumar datos de tiempo en mysql es necesario usar TIMEDIFF() por que la funcion SUM() solo suma numeros y no fechas o tiempo. Por ejemplo si queremos sumar todo el tiempo de una tabla usamos:

SELECT SEC_TO_TIME(SUM(TIMEDIFF(t.time, '00:00:00.000000'))) FROM time_table AS t

Ahora si necesitamos hacer esto mismo pero agrupando en grupos:

SELECT SEC_TO_TIME(SUM(TIMEDIFF(t.time, '00:00:00.000000'))), t.category FROM time_table AS t
GROUP BY t.category

MySQL COUNT en categorias y subcategorias

Anoche se me presento un problema: necesitaba contar todos los items de una categoria en particular, pero tambien incluyendo todas sus subcategorias. La solucion que le encontre a este problema es la siguiente.

SELECT cc.id, cc.title, COUNT(cc.id)
FROM items AS i
LEFT JOIN categories AS c ON c.id = i.cid
LEFT JOIN categories AS cc ON cc.id = c.parent_id
GROUP BY cc.id

Primero obtenemos todos los items y tambien sus respectivas subcategorias, despues con esos datos podemos obtener los nombres de las categorias principales. Con toda esa lista lo que nos basta es agrupar por categorias principales (cc.id) y contar cuantos items tenemos en cada categoria.

Got error 139 from storage engine

Algunas veces aparece este extraño error cuando intentamos grabar en una tabla de MySQL. Indagando un poco en la web me encuentro que es un problema que tiene la tecnología InnoDB específicamente cuando graba cierta cantidad de datos.

Quizás también se puede solucionar modificando la estructura de la tabla en cuestión, pero la solución mas rápida a esto es cambiar la tecnología InnoDB por la que usa MySQL por defecto que se llama MyISAM.

Para hacer esto podemos utilizar la entrada ALTER:

ALTER TABLE tabla ENGINE = MyISAM

Reparando tablas con MySQL

Hoy me apareció un error muy extraño en una base de datos de una pagina web. El error decia lo siguiente:

 error    : Table './quete/importa' is marked as crashed and should be repaired

Ahora la pregunta era como solucionar este tema. Simplemente ejecutando este comando:

 mysqlcheck -pclavedelmysql --auto-repair nombredelaDB nombredelatabla

Mas Info: http://www.databasejournal.com/features/mysql/article.php/3300511

Exportando con UTF-8

Muchas veces cuando exportamos una tabla que tiene caracteres especiales (como acentos y enies) al importarla de nuevo, esos caracteres cambian.

Para arreglar esos caracteres podemos usar el siguiente comando:

iconv -f utf8 -t iso-8859-1 <file.sql> -o <newfile.sql>

De esta manera, al importar la tabla, esos caracteres se veran normalmente.

Newsletter

Quick contact

If you need to contact us below the tracks offer direct contact: