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

[SOLUCIONADO] traer los campos que cumplan una condicion

Estas en el tema de traer los campos que cumplan una condicion en el foro de Mysql en Foros del Web. Buen dia,.. teng una tabla con 11 campos pero requiero traerme en la consulta los campos de un registro que cumplan una sola condicion, que ...
  #1 (permalink)  
Antiguo 28/02/2013, 07:06
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Información traer los campos que cumplan una condicion

Buen dia,..

teng una tabla con 11 campos pero requiero traerme en la consulta los campos de un registro que cumplan una sola condicion, que su valor sea igual a 1.

como puedo hacer este tipo de consulta ?

tengo esto pero creo que resultaria un codigo muy extenso porque me tocaria repetirlo 11 veces, hay otra forma?

Código MySQL:
Ver original
  1. SELECT descripcion_cargo,pruebas_psicotecnicas FROM cargos  where pruebas_psicotecnicas='1'
  2. UNION ALL SELECT descripcion_cargo,pruebas_tecnicas FROM cargos  where pruebas_tecnicas='1'
  #2 (permalink)  
Antiguo 28/02/2013, 07:16
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: traer los campos que cumplan una condicion

Lamento decirte que no existe una consulta única que pueda devolverte columnas de una tabla en forma dinámica.
Pero como además, no es resulta entendible en qué condiciones puede requerirse ese tipo de consulta, llego a la conclusión de que o simplemente no quieres resolverlo por programación (que sería lo más sencillo), o tal vez la tabla en sí pudiera no estar bien diseñada.
¿Puedes explicarnos en qué contexto, y con qué estructura de tablas estás trabajando para necesitar algo como eso?
__________________
¿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 28/02/2013, 08:39
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: traer los campos que cumplan una condicion

Claro, mira estoy diseñando una aplicacion para HOjas de vida en la compañia para la que laboro, hay una tabla llamada Cargos la cual tiene el id del cargo y los otros 10 campos tienen los tipos de pruebas que aplican para el cargo, cuando esta en cero es porque ese tipo de prueba no aplica para ese cargo y cuando esta en 1 es porque ese tipo de prueba si aplica para ese cargo: EJEMPLO:

Id_cargo descripcion_cargo prueba_psicotecnica prueba_sistemas entrevista_gerente
50 psicologa 1 0 1

la idea es mostrar en pantalla una tabla que se Carga dinamicamente con los campos que estan en 1
En este caso, el cargo para psicologa deberapresentar entrevistas en prueba psicotecnica y entrevista generente
  #4 (permalink)  
Antiguo 28/02/2013, 09:52
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: traer los campos que cumplan una condicion

Es mas o menos lo que supuse.
En realidad el problema es que esa tabla no está normalizada. Hay una relación N:N entre Cargo y Pruebas, por lo que se requiere una tabla que relacione ambas cosas. De ese modo una sola consulta devuelve lo que necesitas, con la sola necesidad de que la tabla devuelva se procesa en la aplicación para mostrar los ceros y unos.
En esencia sería
Cita:
Cargo(cargo_id, descripcion, ...)
Prueba(prueba_id, desc_prueba, ...)
Entrevistador(entrevistador_id, funcion_o_cargo)
Cargo_prueba(cargo_id, prueba_id, entrevistador_id)
La ventaja de ese esquema es que no restringe a una cantidad máxima de pruebas, sino que puedes adicionar o eliminar pruebas o cargos, sin necesidad de modificar la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/02/2013, 10:56
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: traer los campos que cumplan una condicion

muchas gracias, lo pondre a prueba, nuevamente gracias por la disposicion de ayuda !!!
  #6 (permalink)  
Antiguo 28/02/2013, 14:23
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: traer los campos que cumplan una condicion

Solucionado asi:

Código SQL:
Ver original
  1. SELECT descripcion_cargo,descrip_prueba
  2. FROM cargos a, pruebas b
  3. WHERE a.id_cargo='$id_cargo'
  4. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,1) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  5. UNION ALL
  6. SELECT descripcion_cargo,descrip_prueba
  7. FROM cargos a, pruebas b
  8. WHERE a.id_cargo='$id_cargo'
  9. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,3) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  10. UNION ALL
  11. SELECT descripcion_cargo,descrip_prueba
  12. FROM cargos a, pruebas b
  13. WHERE a.id_cargo='$id_cargo'
  14. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,5) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  15. UNION ALL
  16. SELECT descripcion_cargo,descrip_prueba
  17. FROM cargos a, pruebas b
  18. WHERE a.id_cargo='$id_cargo'
  19. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,7) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  20. UNION ALL
  21. SELECT descripcion_cargo,descrip_prueba
  22. FROM cargos a, pruebas b
  23. WHERE a.id_cargo='$id_cargo'
  24. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,9) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  25. UNION ALL
  26. SELECT descripcion_cargo,descrip_prueba
  27. FROM cargos a, pruebas b
  28. WHERE a.id_cargo='$id_cargo'
  29. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,11) AS yo FROM cargos WHERE id_cargo='$id_cargo')  
  30. UNION ALL
  31. SELECT descripcion_cargo,descrip_prueba
  32. FROM cargos a, pruebas b
  33. WHERE a.id_cargo='$id_cargo'
  34. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,13) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  35. UNION ALL
  36. SELECT descripcion_cargo,descrip_prueba
  37. FROM cargos a, pruebas b
  38. WHERE a.id_cargo='$id_cargo'
  39. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,15) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  40. UNION ALL
  41. SELECT descripcion_cargo,descrip_prueba
  42. FROM cargos a, pruebas b
  43. WHERE a.id_cargo='$id_cargo'
  44. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,17) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  45. UNION ALL
  46. SELECT descripcion_cargo,descrip_prueba
  47. FROM cargos a, pruebas b
  48. WHERE a.id_cargo='$id_cargo'
  49. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,19) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  50. UNION ALL
  51. SELECT descripcion_cargo,descrip_prueba
  52. FROM cargos a, pruebas b
  53. WHERE a.id_cargo='$id_cargo'
  54. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,21) AS yo FROM cargos WHERE id_cargo='$id_cargo')  
  55. UNION ALL
  56. SELECT descripcion_cargo,descrip_prueba
  57. FROM cargos a, pruebas b
  58. WHERE a.id_cargo='$id_cargo'
  59. AND b.cod_prueba IN(SELECT SUBSTRING(vector_prueba,23) AS yo FROM cargos WHERE id_cargo='$id_cargo')
  #7 (permalink)  
Antiguo 28/02/2013, 14:37
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: traer los campos que cumplan una condicion

Eso no es una solución.
Parece un mal parche que nos da la impresión de un diseño peor: Un campo multivaluado, cosa completamente prohibida en las bases de datos...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 28/02/2013, 14:39
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 10 meses
Puntos: 4
Respuesta: traer los campos que cumplan una condicion

ok retornare con tu apresiacion anterior y lo modificare...

Etiquetas: Ninguno
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 06:38.