Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/04/2008, 05:09
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 9 meses
Puntos: 300
Re: ¿¿¿select... if... from.... [where...]???

Hola, Pikeres,

En MySQL el IF como función de control de flujo se puede hacer en el SELECT.
ejemplo 1) te muestra el valor del campo1, y, además, si el valor del campo1 es mayor que 3, te muestra el texto primero y si no el segundo:
SELECT campo1, IF (campo1 >3, "es mayor que tres", "es menor que tres") AS resultado FROM nombretabla.

Naturalmente, también puedes mostrar campos:
ejemplo2) si el valor del campo1 es mayor que 3, te muestra el campo1 y si no el campo2
SELECT IF(campo1 > 3, campo1, campo2) AS campocondicionado FROM TABLA

El IF está pensado para una condición con dos opciones, aunque se puede anidar. Pero para hacer eso mejor, es decir, elegir entre varias opciones, debes usar el case when... then, que también puede usarse en el select, y cuya estructura es la que te ha mostrado GIANCO321. En este ejemplo lo que hacemos es ver el valor numérico del mes de un campo fecha, y según el valor, mostrar el nombre del mes en español. Aquí lo tienes en un select

SELECT
CASE WHEN MONTH(campofecha) = 1 THEN "enero"
WHEN MONTH(campofecha) = 2 THEN "febrero"
WHEN MONTH(campofecha) = 3 THEN "marzo"
WHEN MONTH(campofecha) = 4 THEN "abril"
WHEN MONTH(campofecha) = 5 THEN "mayo"
WHEN MONTH(campofecha) = 6 THEN "junio"
WHEN MONTH(campofecha) = 7 THEN "julio"
WHEN MONTH(campofecha) = 8 THEN "agosto"
WHEN MONTH(campofecha) = 9 THEN "septiembre"
WHEN MONTH(campofecha) = 10 THEN "octubre"
WHEN MONTH(campofecha) = 11 THEN "noviembre"
WHEN MONTH(campofecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END AS MESespañol from nombretabla

Sobre estas funciones de control de flujo, mira este enlace:

http://dev.mysql.com/doc/refman/5.0/...functions.html