Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/01/2009, 03:39
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Culculo de edad en meses

Andrés,
con el dato del peso actual y la fecha de nacimiento introducidos en un formulario será fácil sacar con una sola consulta el dato -1, -2, etc. que quieres, tras ver si el peso sobrepasa por exceso o defecto esa media o peso normal, y será una sola consulta. Bastará con hacer un inner join del resultado del número de meses conseguido a partir de la fecha de nacimiento (ahora ya sabemos que a partir del día 11 días hasta 20 más es 0.5 más, y de 21 en adelante 1 mes más) con el mes de la tabla donde tienes los pesos por meses; luego con case... when sacaremos el dato según el rango. Si nos pones la estructura de la tabla y algunos datos (me refiero a la tabla de meses y pesos), podremos hacer alguna prueba. Dinos cómo tienes lo de mes y medio en la tabla, imagino como 6.5 meses, ¿no?
Un detalle más: lo que estás haciendo no te permite guardar un histórico. Para eso deberías tener una tabla de pesadas con fecha de pesada y donde guardarías el dato del peso en ese momento. Restarías a la fecha de nacimiento la fecha de pesada(la del día de la pesada) y guadarías el dato final en otro campo de esa tabla de pesadas. Con eso y el id del niño podrías llevar un control de las fluctuaciones del peso...

EDITO: te pongo la consulta para saber la edad. Te muestro la fecha de nacimiento y los días sobrantes, para que veas lo que hace (luego se quitarán)

Cita:
SELECT fecha_nacimiento, (
MOD(datediff( curdate( ) , fecha_nacimiento ),30)
)dias, (
FLOOR( datediff( curdate( ) , fecha_nacimiento ) /30 )+(
CASE WHEN MOD(datediff( curdate( ) , fecha_nacimiento ),30) >=21
THEN 1
WHEN MOD(datediff( curdate( ) , fecha_nacimiento ),30) <11
THEN 0
ELSE 0.5
END )
)meses
FROM talla_para_la_edad

Última edición por jurena; 21/01/2009 a las 13:46 Razón: cambiar %30 por la función MOD(fecha,30)