Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/05/2013, 05:34
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: error en consulta sql

Cita:
referente a mi problema debido a que con programacion hay que hacer muchos condicionales
La cosa pasa no por evitar es hacer mucha programación, sino una programación correcta, detallada. Lleva tiempo, pero es necesaria.
Yo he tenido que en cierta ocasión crear la validación para los datos de una tabla con 109 campos, y en realidad todo el tiempo que me llevó crear las validaciones me lo ahorré en dolores de cabeza luego. Lo sé porque esas validaciones las hice en un día, luego de perder tres semanas de trabajo para tratar de hacer algo como lo que pretendes.
No es una buena forma.
Prorgamáticamente es muy sencillo preparar una función que construya los parámetros adecuados para una consulta SQL. En cambio haceruna consulta multiuso sólo hará que proceses cosas innecesariamente, para obtener más resultados de los que necesitas.
Terminarás pagando con performance. Pero eso es tu decisión.
Cita:
pense al final hacerlo con las expresiones regulares osin de esta forma solo tengo que cambiar en cada en la sql si tiene valor cambiar la expresion regular por el valor a buscar de esta forma solo tendria que hacer un condicional para cada campo de formulario.
Expresiones regulares son una mala idea para usar con datos numéricos. Eso ni lo consideraría. Sólo tienen sentido en búsquedas de texto (te aclaro que numeros y texto no tienen los mismos algoritmos internos en el kernel del DBMS, porque no se almacenan de la misma forma.
La búsqueda por aproximación de un valor numérico hará que en realidad devuelva cosas que no pertenecen a lo buscado.

- Los números sólo pueden tener:
1) valor finito
2) rangos de valor.
3) series de valores
4) grupos.
Por eso hay tres formas de definirlos en SQL:
Código MySQL:
Ver original
  1. WHERE campo = valor...
  2. WHERE campo BETWEEN valor1 AND valor2...
  3. WHERE campo IN(1, 2, 3, 4, 5... ) ...
Una más es una extensión de la última:
Código MySQL:
Ver original
  1. WHERE campo IN (SELECT valor FROM tabla ...) ...

En vez de esto, usar expresiones regulares implcia conversiones no siempre felices del contenido de los campos numericos a VARCHAR... con resultados inciertos.

Pero te insisto: Esto es mucho más sencillo de crear en programación de lo que piensas. Piensa que un formulario de entrada para consultas siempre tiene una cantidad finita de campos, por lo que cada uno de los formularios puede validarse para crear la cosnulta correctamente.
Si quieres que te asistan en programación te paso el post para el foro del lenguaje que corresponda.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/05/2013 a las 05:54