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

Separar un mismo campo

Estas en el tema de Separar un mismo campo en el foro de Mysql en Foros del Web. Hola Amigos Ante todo espero que tengan un ben dia mi problema es el siguiente un campo del tipo INT puede tener 3 tipos de ...
  #1 (permalink)  
Antiguo 19/04/2013, 12:03
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Separar un mismo campo

Hola Amigos Ante todo espero que tengan un ben dia

mi problema es el siguiente

un campo del tipo INT puede tener 3 tipos de registros
3,6,9

lo que necesito es separarlos mostrarlos y contarlos

lo estoy haciendo asi pero me esta haciendo cualquier cosa y no logro dar con el resultado esperado
Código MySQL:
Ver original
  1. CASE tipo WHEN 3 THEN COUNT(3)END,
  2. CASE tipo WHEN 6 THEN COUNT(6)END,
  3. FROM bla bla
Saludos y muchas gracias
  #2 (permalink)  
Antiguo 19/04/2013, 12:05
Avatar de 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: Separar un mismo campo

En realidad, hay que usar un "truco":
Código MySQL:
Ver original
  1.   SUM(IF(tipo = 3, 1, 0)) Valor3,
  2.   SUM(IF(tipo = 6, 1, 0)) Valor6,
  3.   SUM(IF(tipo = 9, 1, 0)) Valor9
  4. FROM bla bla
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/04/2013, 12:11
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Separar un mismo campo

AAAHHH
a ver?
GRACIAS
  #4 (permalink)  
Antiguo 19/04/2013, 12:19
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Separar un mismo campo

PERFECTO!!!!
SOS UN GROSO
jaja
lo que no entiendo muy bien es que funcion cumple el numero 1
porque funciono cuando al 1 lo puse entre comillas
Saludos
  #5 (permalink)  
Antiguo 19/04/2013, 14:10
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Separar un mismo campo

Hola tumbero_x:

Con permiso de gnzsoloyo te explico la razón del uno...

Este truco en realidad funciona como un contador en programación, es decir, supongo que has visto en más de una ocasión en cualquier lenguaje de programación algo como esto:

Código:
total = total + 1
Este mismo concepto se aplica en este caso. Cada que se analiza un registro se hace la comparación con el IF... si es verdadera entonces se va le pone un 1 como marca... al finalizar la función SUM "cuenta" cuantos 1 existen...

En otras palabras es como el sistema que utilizan los prisioneros para saber cuantos días tienen en la carcel... cada día que pasa ponen una "rayaita" en la pared... para saber cuantos días han pasado, simplemente cuentan el número de rayitas en la pared...

observa lo que pasa sin el SUM():

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+-------+
  3. | id   | campo |
  4. +------+-------+
  5. |    1 |     3 |
  6. |    2 |     6 |
  7. |    3 |     9 |
  8. |    4 |     9 |
  9. |    5 |     3 |
  10. |    6 |     3 |
  11. |    7 |     6 |
  12. |    8 |     6 |
  13. |    9 |     6 |
  14. +------+-------+
  15. 9 rows in set (0.00 sec)
  16.  
  17. mysql> SELECT id, campo,
  18.     ->   IF(campo = 3, 1, 0) Valor3,
  19.     ->   IF(campo = 6, 1, 0) Valor6,
  20.     ->   IF(campo = 9, 1, 0) Valor9
  21.     -> FROM tabla;
  22. +------+-------+--------+--------+--------+
  23. | id   | campo | Valor3 | Valor6 | Valor9 |
  24. +------+-------+--------+--------+--------+
  25. |    1 |     3 |      1 |      0 |      0 |
  26. |    2 |     6 |      0 |      1 |      0 |
  27. |    3 |     9 |      0 |      0 |      1 |
  28. |    4 |     9 |      0 |      0 |      1 |
  29. |    5 |     3 |      1 |      0 |      0 |
  30. |    6 |     3 |      1 |      0 |      0 |
  31. |    7 |     6 |      0 |      1 |      0 |
  32. |    8 |     6 |      0 |      1 |      0 |
  33. |    9 |     6 |      0 |      1 |      0 |
  34. +------+-------+--------+--------+--------+
  35. 9 rows in set (0.00 sec)

Al colocar la función SUM() simplemente cuenta el número de unos para cada categoría.

Saludos
Leo.
  #6 (permalink)  
Antiguo 19/04/2013, 14:13
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Separar un mismo campo

PERFECTO!!!
mejor explicado imposible
Gracias a vos y a gnzsoloyo por su tiempo y por interesarse en mi problema
Saludos!!!

Etiquetas: campo, registros, select
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 21:24.