Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/11/2012, 15:43
Avatar de djaevi
djaevi
 
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Dividir edades comprendidas

Hola mira te hice este codigo es posible que los que saben mas de esto te lo puedan hacer mas reducido quizas con select case pero bueno en fin este lo probe y funciona:
Código MySQL:
Ver original
  1. IF (
  2.     FLOOR(DATEDIFF(now(),fecha) / 365) < 18,
  3.     "Menor a 18",
  4.     IF (
  5.         FLOOR(DATEDIFF(now(),fecha) / 365) >= 18 AND
  6.         FLOOR(DATEDIFF(now(),fecha) / 365) <=30,
  7.         "Entre 18 y 30",
  8.         IF (
  9.             FLOOR(DATEDIFF(now(),fecha) / 365) >= 30 AND
  10.             FLOOR(DATEDIFF(now(),fecha) / 365) <= 50,
  11.             "Entre 30 y 50",
  12.             IF (
  13.                 FLOOR(DATEDIFF(now(),fecha) / 365) >= 50AND
  14.                 FLOOR(DATEDIFF(now(),fecha) / 365) <= 70,
  15.                 "Entre 50 y 70",
  16.                 IF (
  17.                     FLOOR(DATEDIFF(now(),fecha) / 365) >= 70 AND
  18.                     FLOOR(DATEDIFF(now(),fecha) / 365) <= 90,
  19.                     "Entre 70 y 90",
  20.                     IF (
  21.                         FLOOR(DATEDIFF(now(),fecha) / 365) >= 90AND
  22.                         FLOOR(DATEDIFF(now(),fecha) / 365) <=100,
  23.                         "Entre 90 y 100",
  24.                         "Otra Edad"
  25.                     )
  26.                 )
  27.             )
  28.         )  
  29.     )  
  30. )
  31. FROM temp;

Lo primero que hago es calcular la edad de la persona en base a su fecha de nacimiento para eso uso DATEDIFF(now(),fecha); que lo que hace es restar la fecha actual con el campo fecha de la tabla, como DATEDIFF devuelve dicho calculo en dias al mismo lo divido por 365, a ese resultado le aplico la funcion FLOOR que lo que hace es redondear para abajo el resultado ya que por ejemplo 12.5 años en realidad como resultado de edad son 12.

El resto es mas facil son IFS anidados, la sintaxis del if de mysql es IF (CONDICION,VERDADERO,FALSO), entonces lo que hago es:

IF (edad (representada por floor(datediff etc) < 18 ,"Menor a 18" (devuelve menor a 18 en la vista) , ACA SI NO SE CUMPLE LA CONDICION HAGO EL OTRO IF) asi voy haciendo con todos los casos hasta llegar al ultimo donde en el lugar la condicion donde va la parte falsa en lugar de otro if coloco "otra edad" en caso de que la persona sea mayor a 100 años por ejemplo

Fijate si te funciona y me avisas.

Salu2

Última edición por djaevi; 03/11/2012 a las 07:45