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

[SOLUCIONADO] buscar valores iguales en campos de un registro

Estas en el tema de buscar valores iguales en campos de un registro en el foro de Mysql en Foros del Web. Buenas tardes, necesito un query que me traiga la cantidad de valor iguales de un registro. Me explico, tengo una tabla cuyos campos son algo ...
  #1 (permalink)  
Antiguo 13/02/2017, 10:39
 
Fecha de Ingreso: junio-2008
Ubicación: Spain
Mensajes: 39
Antigüedad: 15 años, 10 meses
Puntos: 0
buscar valores iguales en campos de un registro

Buenas tardes, necesito un query que me traiga la cantidad de valor iguales de un registro.

Me explico, tengo una tabla cuyos campos son algo asi como los siguientes:
Id, L1, L2, L3.....L10.

los valores pueden X, L, F.

Lo que necesitaría es que me diga cuantos de estos campos tienen el valor X o cuantos el valor L etc.

Saludos y espero que podáis ayudarme.

Gracias
  #2 (permalink)  
Antiguo 13/02/2017, 19:13
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: buscar valores iguales en campos de un registro

puedes ocupar algo con LIKE

Código SQL:
Ver original
  1. SELECT COUNT(*) {TABLA} WHERE campo LIKE 'L%'

que te estara devolviendo el numero de registros que inician con L

espero haberte dado una idea..
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 14/02/2017, 05:32
 
Fecha de Ingreso: junio-2008
Ubicación: Spain
Mensajes: 39
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: buscar valores iguales en campos de un registro

Gracias petit89,
pero aquí solo verificaría un campo, y lo que pretendo es que verifique todos los campos a ver cuantas veces esta el valor L, en un solo registro.
  #4 (permalink)  
Antiguo 14/02/2017, 08:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: buscar valores iguales en campos de un registro

Pregunta, porque tiene los datos de esa manera? Se puede hacer lo que buscas, pero seria hacerlo columna por columna y despues sacar los desglosados de cada valor y hacer las respectivas sumatorias para obtener lo que necesitas.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 14/02/2017, 13:52
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: buscar valores iguales en campos de un registro

Hola oripoll:

Lo que quieres hacer no es dificil, sin embargo tu modelo de datos no ayuda mucho... desde mi punto de vista tienes un mal diseño, pero bueno, me voy a enfocar en el problema sin ir a la raiz, para el ejemplo voy a suponer que tienes tus datos más o menos así:

Código:
mysql> SELECT * FROM tabla;
+------+------+------+------+------+------+
| id   | L1   | L2   | L3   | L4   | L5   |
+------+------+------+------+------+------+
|    1 | L    | L    | X    | F    | L    |
|    2 | X    | X    | X    | L    | L    |
|    3 | L    | L    | L    | L    | L    |
|    4 | X    | L    | X    | F    | X    |
|    5 | L    | F    | F    | F    | F    |
+------+------+------+------+------+------+
5 rows in set (0.00 sec)
Por cuestiones de espacio (y flojera, lo admito) sólo puse 5 columnas, para obener el total de L's, X's y F's que tiene cada id, lo puedes hacer de dos formas, una sería en forma de columnas, así:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   id,
  3.     ->   IF(L1 = 'L', 1, 0) + IF(L2 = 'L', 1, 0) + IF(L3 = 'L', 1, 0) + IF(L4 = 'L', 1, 0) + IF(L5 = 'L', 1, 0) total_l,
  4.     ->   IF(L1 = 'X', 1, 0) + IF(L2 = 'X', 1, 0) + IF(L3 = 'X', 1, 0) + IF(L4 = 'X', 1, 0) + IF(L5 = 'X', 1, 0) total_x,
  5.     ->   IF(L1 = 'F', 1, 0) + IF(L2 = 'F', 1, 0) + IF(L3 = 'F', 1, 0) + IF(L4 = 'F', 1, 0) + IF(L5 = 'F', 1, 0) total_f
  6.     -> FROM tabla;
  7. +------+---------+---------+---------+
  8. | id   | total_l | total_x | total_f |
  9. +------+---------+---------+---------+
  10. |    1 |       3 |       1 |       1 |
  11. |    2 |       2 |       3 |       0 |
  12. |    3 |       5 |       0 |       0 |
  13. |    4 |       1 |       3 |       1 |
  14. |    5 |       1 |       0 |       4 |
  15. +------+---------+---------+---------+
  16. 5 rows in set (0.00 sec)

Básicamente consiste en reemplazar las letras por 1's y después contar cada tipo. La otra forma sería un poco más "simple", y sería hacerlo en forma de renglones:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->    id, campo, COUNT(*) total
  3.     -> FROM
  4.     -> (
  5.     ->   SELECT id, l1 campo FROM tabla
  6.     ->   UNION ALL
  7.     ->   SELECT id, l2 campo FROM tabla
  8.     ->   UNION ALL
  9.     ->   SELECT id, l3 campo FROM tabla
  10.     ->   UNION ALL
  11.     ->   SELECT id, l4 campo FROM tabla
  12.     ->   UNION ALL
  13.     ->   SELECT id, l5 campo FROM tabla
  14.     -> ) T
  15.     -> GROUP BY id, campo;
  16. +------+-------+-------+
  17. | id   | campo | total |
  18. +------+-------+-------+
  19. |    1 | F     |     1 |
  20. |    1 | L     |     3 |
  21. |    1 | X     |     1 |
  22. |    2 | L     |     2 |
  23. |    2 | X     |     3 |
  24. |    3 | L     |     5 |
  25. |    4 | F     |     1 |
  26. |    4 | L     |     1 |
  27. |    4 | X     |     3 |
  28. |    5 | F     |     4 |
  29. |    5 | L     |     1 |
  30. +------+-------+-------+
  31. 11 rows in set (0.00 sec)

Dale un vistazo a ver si alguna de las dos te puede servir.

Saludos
Leo.
  #6 (permalink)  
Antiguo 14/02/2017, 16:12
 
Fecha de Ingreso: junio-2008
Ubicación: Spain
Mensajes: 39
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: buscar valores iguales en campos de un registro

Lo veo y te comento, luego te explico porque tengo ese diseño de tabla.
  #7 (permalink)  
Antiguo 16/02/2017, 05:04
 
Fecha de Ingreso: junio-2008
Ubicación: Spain
Mensajes: 39
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: buscar valores iguales en campos de un registro

leonardo_josue, todo perfecto de hecho con esto soluciono el siguiente paso.

Por cierto no es que el diseño de la tabla sea exactamente así, solo quería poder leer un registro en particular ya que es una tabla de asistencias.

muchas gracias.

Etiquetas: campos, iguales, registro, tabla
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 11:45.