Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/02/2012, 14:44
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Como realizar consultas condicionadas

Hola severicks:

En primer lugar, las condiciones que estás especificando no son correctas pues tienes dos condiciones que no son excluyentes:

IF (columna1 > 1)...
...
IF (columna1 > 2)

Si el valor de la columna 1 es 2 o mayor a 2 entonces SIEMPRE ENTRARÍA POR EL PRIMER IF, PERO NUNCA POR EL ÚLTIMO IF, ojo con eso.

No estoy seguro de si entendí correctamente qué es lo que quieres hacer, por ejemplo tengo la duda de si las condiciones de deben evaluar para cada uno de los registros o sólo considerando el primero... sería conveniente que nos pusieras algunos datos de ejemplo para saber qué es lo que pretendes. Por lo pronto se me ocurre que lo que quieres hacer es algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +----------+----------+----------+----------+----------+----------+
  3. | columna1 | columna2 | columna3 | columna4 | columna5 | columna6 |
  4. +----------+----------+----------+----------+----------+----------+
  5. |        1 | uno 1    |        2 | dos 1    |        3 | tres 1   |
  6. |        2 | uno 2    |        2 | dos 2    |        3 | tres 2   |
  7. |        3 | uno 3    |        2 | dos 3    |        3 | tres 3   |
  8. +----------+----------+----------+----------+----------+----------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT columna1,
  12.     -> CASE WHEN (columna1 < 2) THEN columna1
  13.     -> ELSE
  14.     -> CASE WHEN (columna1 = 2) THEN columna3
  15.     -> ELSE
  16.     -> CASE WHEN (columna1 > 2) THEN columna5 END
  17.     -> END
  18.     -> END primer_columna,
  19.     -> CASE WHEN (columna1 < 2) THEN columna2
  20.     -> ELSE
  21.     -> CASE WHEN (columna1 = 2) THEN columna4
  22.     -> ELSE
  23.     -> CASE WHEN (columna1 > 2) THEN columna6 END
  24.     -> END
  25.     -> END segunda_columna
  26.     -> FROM tabla;
  27. +----------+----------------+-----------------+
  28. | columna1 | primer_columna | segunda_columna |
  29. +----------+----------------+-----------------+
  30. |        1 |              1 | uno 1           |
  31. |        2 |              2 | dos 2           |
  32. |        3 |              3 | tres 3          |
  33. +----------+----------------+-----------------+
  34. 3 rows in set (0.02 sec)

Observa que los valores de las columnas (primer_columna y segunda_columna) dependen del valor de la columna1, en cada renglón se evalúa la columna 1 para determinar qué valores colocar. Si esto no es lo que necesitas entonces te repito, pon algunos datos de ejemplo para aclararnos las cosas.

Finalmente, recuerda que existen los PROCEDIMIENTOS ALMACENADOS, con estos puedes hacer prácticamente lo que desees, proporciona elementos como un lenguaje de programación.

Saludos
Leo.