Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con CASE

Estas en el tema de Problemas con CASE en el foro de Mysql en Foros del Web. Hola Amigos!!! hace muy poco tiempo descubri la sentencia CASE y andubo muy bien hasta ahora y no se porque puede ser @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 19/04/2012, 13:08
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Problemas con CASE

Hola Amigos!!!
hace muy poco tiempo descubri la sentencia CASE
y andubo muy bien hasta ahora y no se porque puede ser


Código MySQL:
Ver original
  1. CASE setos_en_sa
  2.                  WHEN 1 THEN "entrada"
  3.                  WHEN 2 THEN "salida"
  4.                  WHEN 3 THEN "entrada x edi"
  5.                  WHEN 4 THEN "salida x edi"
  6.                  WHEN 5 THEN "entrada x eli"
  7.                  WHEN 6 THEN "salida x eli"
  8.                  WHEN 7 THEN "entrada x pro"
  9.                  WHEN 8 THEN "salida x pro"
  10.                  END
de esta forma no funciona y tampoco da ningun error
pero si le saco la ultima linea...
Código MySQL:
Ver original
  1. WHEN 8 THEN "salida x pro"
funciona perfecto
estoy totalmente desorientado
saludos y gracias por cualquier ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 19/04/2012, 15:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problemas con CASE

Hola tumbero_x:

No veo ningún problema con la sintaxis... pero si dices que no marca error, pero no funciona eso quiere decir que no estás obteniendo el resultado esperado lo que sería un error de lógica, no un problema con la consulta... lo que tendrías que decirnos es qué información tienes en tu tabla y qué es lo que esperas de salida... checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-------------+
  3. | setos_en_sa |
  4. +-------------+
  5. |           1 |
  6. |           2 |
  7. |           3 |
  8. |           4 |
  9. |           5 |
  10. |           6 |
  11. |           7 |
  12. |           8 |
  13. |           9 |
  14. +-------------+
  15. 9 rows in set (0.00 sec)
  16.  
  17. mysql> SELECT
  18.     -> setos_en_sa,
  19.     -> CASE setos_en_sa
  20.     -> WHEN 1 THEN "entrada"
  21.     -> WHEN 2 THEN "salida"
  22.     -> WHEN 3 THEN "entrada x edi"
  23.     -> WHEN 4 THEN "salida x edi"
  24.     -> WHEN 5 THEN "entrada x eli"
  25.     -> WHEN 6 THEN "salida x eli"
  26.     -> WHEN 7 THEN "entrada x pro"
  27.     -> WHEN 8 THEN "salida x pro"
  28.     -> END case_setos_en_sa
  29.     -> FROM tabla;
  30. +-------------+------------------+
  31. | setos_en_sa | case_setos_en_sa |
  32. +-------------+------------------+
  33. |           1 | entrada          |
  34. |           2 | salida           |
  35. |           3 | entrada x edi    |
  36. |           4 | salida x edi     |
  37. |           5 | entrada x eli    |
  38. |           6 | salida x eli     |
  39. |           7 | entrada x pro    |
  40. |           8 | salida x pro     |
  41. |           9 | NULL             |
  42. +-------------+------------------+
  43. 9 rows in set (0.00 sec)

Para todos los valores de la tabla regresa su correspondiente descripción. En el caso del setos_en_sa = 9, AL NO EXISTIR NINGUNA CONDICIÓN PARA ESTE VALOR REGRESA UN NULL... puedes agregar una condición ELSE al final para este tipo de casos.

Saludos
Leo.
  #3 (permalink)  
Antiguo 19/04/2012, 15:24
Avatar de mike28gt  
Fecha de Ingreso: abril-2010
Mensajes: 56
Antigüedad: 14 años
Puntos: 14
Respuesta: Problemas con CASE

Sino prueba correrlo de esta forma, y asi verás el valor que no te esta reconociendo dentro del CASE.

Código SQL:
Ver original
  1. CASE setos_en_sa
  2.                  WHEN 1 THEN "entrada"
  3.                  WHEN 2 THEN "salida"
  4.                  WHEN 3 THEN "entrada x edi"
  5.                  WHEN 4 THEN "salida x edi"
  6.                  WHEN 5 THEN "entrada x eli"
  7.                  WHEN 6 THEN "salida x eli"
  8.                  WHEN 7 THEN "entrada x pro"
  9.                  WHEN 8 THEN "salida x pro"
  10.                  ELSE setos_en_sa
  11.                  END
  #4 (permalink)  
Antiguo 19/04/2012, 17:46
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con CASE

hola gracias por responder
de las formas que me dijeron siempre me aparece null
ahora si saco la ultima fila, funciona WHEN 8 THEN "salida x pro"
la verdad a mi no se ocurre mas nada
si se les ocurre algo mas se los voy a agradecer un monton
Saludos!!!
  #5 (permalink)  
Antiguo 19/04/2012, 17:58
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con CASE

aparentemente ya esta solucionado
en vez de colocar un WHEN por cada linea , lo puse todo en una sola linea
y andubo
Código MySQL:
Ver original
  1. CASE setos_en_sa WHEN 1 THEN "entrada"WHEN 2 THEN "salida"WHEN 3 THEN "entrada x edi"WHEN 4 THEN "salida x edi"WHEN 5 THEN "entrada x eli"WHEN 6 THEN "salida x eli"WHEN 7 THEN "entrada x pro"WHEN 8 THEN "salida x pro" END

alguien seria tan amble de explicarme porque asi andubo?
saludos y muchas gracias por su tiempo
  #6 (permalink)  
Antiguo 20/04/2012, 08:11
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problemas con CASE

Hola tumbero_x:

El que pongas una sentencia en una lineas o en varias ES COMPLETAMENTE INDISTINTO, esto quiere decir que el error no va por ahí. Ahora bien, lo que se me ocurre es que tuvieras algún caracter "raro" en la consulta, esto suele ocurrir cuando se copia y pega algún código encontrado en internet. Los browser's suelen agregar caracteres especiales para representar los espacios o los saltos de línea.

Código MySQL:
Ver original
  1. mysql> select * from tabla;
  2. +-------------+
  3. | setos_en_sa |
  4. +-------------+
  5. |           1 |
  6. |           2 |
  7. |           3 |
  8. |           4 |
  9. |           5 |
  10. |           6 |
  11. |           7 |
  12. |           8 |
  13. |           9 |
  14. +-------------+
  15. 9 rows in set (0.00 sec)
  16.  
  17. mysql> SELECT
  18.     -> setos_en_sa,
  19.     -> CASE setos_en_sa
  20.     -> WHEN 1 THEN "entrada"
  21.     -> WHEN 2 THEN "salida"
  22.     -> WHEN 3 THEN "entrada x edi"
  23.     -> WHEN 4 THEN "salida x edi"
  24.     -> WHEN 5 THEN "entrada x eli"
  25.     -> WHEN 6 THEN "salida x eli"
  26.     -> WHEN 7 THEN "entrada x pro"
  27.     -> WHEN 8 THEN "salida x pro"
  28.     -> END case_setos_en_sa
  29.     -> FROM tabla;
  30. +-------------+------------------+
  31. | setos_en_sa | case_setos_en_sa |
  32. +-------------+------------------+
  33. |           1 | entrada          |
  34. |           2 | salida           |
  35. |           3 | entrada x edi    |
  36. |           4 | salida x edi     |
  37. |           5 | entrada x eli    |
  38. |           6 | salida x eli     |
  39. |           7 | entrada x pro    |
  40. |           8 | salida x pro     |
  41. |           9 | NULL             |
  42. +-------------+------------------+
  43. 9 rows in set (0.01 sec)
  44.  
  45. mysql> SELECT setos_en_sa, CASE setos_en_sa WHEN 1 THEN "entrada"WHEN 2 THEN "sa
  46. lida"WHEN 3 THEN "entrada x edi"WHEN 4 THEN "salida x edi"WHEN 5 THEN "entrada x
  47. eli"WHEN 6 THEN "salida x eli"WHEN 7 THEN "entrada x pro"WHEN 8 THEN "salida x
  48. pro" END case_setos_en_sa FROM tabla;
  49. +-------------+------------------+
  50. | setos_en_sa | case_setos_en_sa |
  51. +-------------+------------------+
  52. |           1 | entrada          |
  53. |           2 | salida           |
  54. |           3 | entrada x edi    |
  55. |           4 | salida x edi     |
  56. |           5 | entrada x eli    |
  57. |           6 | salida x eli     |
  58. |           7 | entrada x pro    |
  59. |           8 | salida x pro     |
  60. |           9 | NULL             |
  61. +-------------+------------------+
  62. 9 rows in set (0.00 sec)

Por lo tanto, SIEMPRE HAY QUE TECLEAR LAS CONSULTAS, NO COPIARLAS Y PEGARLAS EN LA CONSULA.

Saludos
Leo.
  #7 (permalink)  
Antiguo 20/04/2012, 08:17
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Problemas con CASE

buenisimo muchas gracias voy a seguir tus recomendaciones
Saludos!!!

Etiquetas: case
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.