IF en consultas MySQL

¿Cuánto tiempo ahorraríamos (tiempo de proceso y de programación) si la información ya nos llegara procesada de MySQL (o cualquier sistema gestor de bases de datos, pero MySQL mola más)? La respuesta es: ¡¡MUCHÍSIMO!!

Bien, pues una buena manera de hacer esto es utilizar el sistema gestor de base de datos como algo más que un simple cajón en donde meter cosas y después reclamarlas.

¿Cómo hacemos esto?

Supongamos que queremos agrupar en una tabla a todas aquellas personas cuya edad esté comprendida entre los 0 y los 18, y otro grupo para el resto de las personas.

Partimos de una tabla con el nombre, la edad, el sexo y la estatura.

La query a realizar no contiene distinciones entre edades:

 - Si agrupásemos por edad, lo único que conseguiríamos sería una agrupación por cada una de las edades.

 - Si seleccionásemos en la tabla los menores de 18, no tendríamos a toda la gente agrupada, simplemente tendríamos una selección de los menores de edad.

Para solucionar esto podemos recurrir a una consulta total y formatear los datos con un lenguaje de programación como PHP, pero no es eficiente, y además nos lleva a escribir más código del que realmente necesitaríamos, ya que MySQL nos puede solucionar la papeleta mucho más fácil.

 

SELECT nombre, sexo, estatura, edad, if(edad<18,1,0) as edad_agrupada 
FROM personas 
GROUP BY edad_agrupada

 

Con esta consulta y un simple if hemos conseguido que todas las personas menores de 18 años estén agrupadas juntas. Ahora, para complicar un poco más el tema, esas personas tendrán también que ser mayores de 10 años:

 

SELECT nombre, sexo, estatura, edad, 
if(edad<18,if(edad>10,1,0),0) as edad_agrupada 
FROM personas 
GROUP BY edad_agrupada
 

 

Al anidar un if dentro de otro if hemos conseguido el objetivo; ahora solo tendremos que realizar la acción pertinente teniendo en cuenta si el campo edad agrupada es igual a cero o no.

2 comentarios sobre "IF en consultas MySQL"

yayo
<p>Que sencillo. Con la de codigo chungo que tengo yo en mi web... Nos vemos en Madrid.</p>
Derleth
muy bueno.. ahora entiendo perfectamente ^^