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

Comodín para WHERE

Estas en el tema de Comodín para WHERE en el foro de Mysql en Foros del Web. Buenas foreros Este es un tema con el que llevo lidiando hace tiempo y que he podido solventar con php. Pero pienso que puede existir ...
  #1 (permalink)  
Antiguo 16/11/2015, 04:48
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 18 años
Puntos: 0
Comodín para WHERE

Buenas foreros

Este es un tema con el que llevo lidiando hace tiempo y que he podido solventar con php. Pero pienso que puede existir en Sql algún comodín que me permita optimizar las consultas.

Tengo esta consulta de ejemplo:
Código MySQL:
Ver original
  1. SELECT * FROM alerts WHERE id_usuario=100

Pero supongamos que no necesito filtrar por usuario, quiero que se muestren todos los usuarios.

Pero si mi consulta fuese así:

Código MySQL:
Ver original
  1. SELECT * FROM alerts WHERE id_usuario=

Me genera un error como resultado.

¿Existe algún carácter o función comodín para cuando no se establece ningún dato de filtro? En un supuesto filtro de formulario los usuarios establecerán filtros de algunos campos, no de todos. Son a esos campos los que me gustaría establecerles ese comodín para no tener que tocar la consulta.

Gracias a todos de antemano

Última edición por gnzsoloyo; 16/11/2015 a las 05:57
  #2 (permalink)  
Antiguo 16/11/2015, 06:02
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: Comodín para WHERE

No existe un "comodín" para el WHERE en ningún DBMS. La propia característica de lenguaje imperativo de SQL te puede decir que todo lo que SQL debe hacer se le tiene que indicar expresamente.
Lo que se hace en el caso que mencionas es crear la sentencia dinámicamente poniéndole u omitiendo condiciones en el WHERE según se necesite. Eso se hace por programación, no es muy difícil, y podrás encontrar ejemplos y ayudas en los subforos de los lenguajes. Siendo programación, es OFF TOPIC en los foros de BBDD.

Sí es posible simular un comportamiento como el que dices, en algunos casos. El problema es que para lograrlo debes crear consultas ineficientes, de muy mala performance y dañinas para tu propia aplicación.
No te lo recomiendo.
__________________
¿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 16/11/2015, 06:22
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 18 años
Puntos: 0
Respuesta: Comodín para WHERE

Gracias por tu respuesta gnzsoloyo

Lo que me indicas es lo que he venido haciendo hasta ahora y la verdad que no he tenido problemas pero es que estoy obsesionado con la optimizacion del código y siempre pienso que hay una forma mas eficiente de hacerlo.

Mi código decía, si el parámetro por GET viene vació, la variable esta vacía, si viene lleno la variable se rellena con la sentencia incluido el parámetro de filtrado.

Lo veía un poco lioso en el código pero veo que no existe una solución de optimizacion mas eficaz.

Gracias a ti gnzsoloyo y a todos los foreros de Foros del Web

Etiquetas: campo, php, select, sql, usuarios
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 14:53.