Consulta en MySQL

Bases de datos...

Moderadores: frank, dxfiles

Responder
addul
Mensajes: 15
Registrado: Sab, 12 Oct 2013, 08:16

Consulta en MySQL

Mensaje por addul » Vie, 28 Mar 2014, 14:59

Saludos a la comunidad:

Resulta que tengo un proyecto de PHP con MySQL y tengo una consulta que devuelve una serie de números en una tabla, algunos de dichos números son 0(cero, null, por si no se entiende), estos valores null no se muestran en la tabla y lo que necesito es que muestre todos los valores aunque sean cero.

ej.

nombre horas ganancia
pepe 20 10
manolo 10

como ven la ganancia de manolo no se muestra, y eso lo necesito

Espero por ayuda

Avatar de Usuario
hugo
Mensajes: 1430
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: La Habana
Contactar:

Re: Consulta en MySQL

Mensaje por hugo » Sab, 29 Mar 2014, 11:22

Aquí hay un error de concepto. NULL quiere decir que NO existe un valor en esa columna (y cero es un valor), por eso no sale nada.

Si no quieres que eso suceda, simplemente establece valores a las celdas con valores nulos y modifica la columna para que valide correctamente y ofrezca como valor predeterminado el cero.

Código: Seleccionar todo

UPDATE mitabla SET horas=0 WHERE horas IS NULL;
ALTER TABLE mitabla MODIFY horas DECIMAL(5,2) NOT NULL DEFAULT 0.0;
Otra cosa, recomiendo que uses decimales para las columnas horas y ganancia, porque alguien puede acumular digamos una hora y media o la ganancia puede contener fracciones, de lo contrario tendrás que redondear al entero más próximo y estarás o bien quitándole o dándole inmerecidamente horas o ganancia a alguien.
Lo único que necesita el mal para triunfar es que los hombres buenos no hagan nada.
- Edmund Burke

addul
Mensajes: 15
Registrado: Sab, 12 Oct 2013, 08:16

Re: Consulta en MySQL

Mensaje por addul » Dom, 30 Mar 2014, 07:34

gracias Don Hugo.....pruebo y luego te comento cómo me fue

frizquierdo
Mensajes: 36
Registrado: Sab, 05 Feb 2011, 11:26

Re: Consulta en MySQL

Mensaje por frizquierdo » Lun, 14 Jul 2014, 10:53

Tambien podrías hacer algo como esto:

Código: Seleccionar todo

SELECT nombre, ifnull(horas, 0), ifnull(ganancia, 0) from mitabla
y weno, si tus columnas de horas y ganancia admiten valores decimales puedes emplear además los operadores de conversión CAST o CONVERT por si las moscas, pero no creo te hagan falta a no ser que desees realizar algún calculo matemático en la misma consulta de selección.

De todos modos es muy convenientes que hagas lo que expone Hugo, por lógica es mejor almacenar un cero y no dejar a null las columnas esas.

Responder