Ver Mensaje Individual
  #8 (permalink)  
Antiguo 02/04/2013, 16:59
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: duda con case en funcion mysql

Primero: Respira. Cálmate al escribir, y por sobre todo, no te olvides de los puntos y puntos aparte. Estás escribiendo como desesperada y resulta difícil entender lo que dices.
Segundo, existen innumerables ejemplos en la web, pero lo primero que deberías leer sería el manual de referencia (no entiendo por que a nadie parece ocurrírsele algo tan simple como eso)...
Si lo lees, verás que la sintaxis del IF es otra, y también verás que no puedes hacer asignaciones con eso, porque SET no es cláusula de la función:
Cita:
IF(expr1, expr2, expr3)

Si expr1 es TRUE (expr1 <> 0 and expr1 <> NULL) entonces IF() retorna expr2; de otro modo retorna expr3. IF() retorna un valor numérico o cadena de caracteres, en función del contexto en que se usa.

Código MySQL:
Ver original
  1. mysql> SELECT IF(1>2,2,3);
  2.         -> 3
  3. mysql> SELECT IF(1<2,'yes','no');
  4.         -> 'yes'
  5. mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
  6.         -> 'no'

Si sólo una de expr2 o expr3 es explícitamente NULL, el tipo del resultado de la función IF() es el mismo tipo que la expresión no NULL .
El bloque de expr1 puede ser cualquier conjunto de condiciones lógicas, siempre que tenga por resultado o TRUE o FALSE. Incluso admite el uso de otras funciones adentro, en tanto sean de una condición tal.
En esencia, puedes usarlo para hacer algo como.
Código MySQL:
Ver original
  1. SET variable = IF( valor IN(valor1, valor2, valor3), siTrue, siFalse);

Ahora bien, en referencia a los primeros posts, desde ya te digo, que tal como lo describes, la SF que pueda hacer eso requeriría, no demasiadas líneas, y usaría un codigo muchísimo más simple que el que escribiste.
Es decir, si, hay modos mejores de lograrlo.

Cita:
no esta bien ese algoritmo, el agoritmo ya lo corregi ahora ya lo tengo bien
Algoritmos tienen los lenguajes de programación, no el SQL. En SQL no hablamos de algoritmos, ni siquiera con el PL/SQL, sino de sintaxis de consultas, optimización, y otros términos, pero no algoritmo.
De hecho, los algoritmos del motor de BBDD son inaccesibles a los programadores, porque están en el kernel del DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)