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

como indicar cualquier cosa en una consulta

Estas en el tema de como indicar cualquier cosa en una consulta en el foro de Mysql en Foros del Web. Hola a todos de antemano gracias por su atencion. Tengo una consulta del tipo: SELECT * FROM usuarios WHERE username = 'algo' AND nombre = ...
  #1 (permalink)  
Antiguo 16/06/2011, 23:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 14 años
Puntos: 0
Pregunta como indicar cualquier cosa en una consulta

Hola a todos de antemano gracias por su atencion.

Tengo una consulta del tipo:

SELECT * FROM usuarios WHERE username = 'algo' AND nombre = 'algo'


Por desgracia las variables que traen el valor de los 'algo' pueden traer un dato en si o no traer nada.

Quisiera saber que caracter debo poner en reemplazo de los 'algo' para que cuando los 'algos' no existan la consulta me triga todos los datos de todos los usuarios es decir un caracter que indique todos o cualquier cosa.

De antemano gracias por su colaboracion.
  #2 (permalink)  
Antiguo 17/06/2011, 01:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 29
Antigüedad: 15 años
Puntos: 4
Respuesta: como indicar cualquier cosa en una consulta

El caracter comodín es el %, con eso te traerá todos.

Un saludo
  #3 (permalink)  
Antiguo 17/06/2011, 08:52
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 14 años
Puntos: 0
Respuesta: como indicar cualquier cosa en una consulta

Hola ellgon creo no haber entendido :/

Es decir mi consuta tendria que que dar de la siguiente forma?

SELECT * FROM usuarios WHERE username = '%' AND nombre = '%'

¿Asi conseguire que me traiga todo?

Gracias nuevamente
  #4 (permalink)  
Antiguo 17/06/2011, 09:39
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: como indicar cualquier cosa en una consulta

Hola richardo8825:

Con el permiso de ellgon, te comento lo siguiente, % es un caracter comodín cuando se utiliza junto a el operador LIKE, que sirve para buscar patrones de cadenas, es decir si tú pones algo como esto:

Código:
WHERE username LIKE '%LEO%'
traerías todas las cadenas que contuvieran la palabra LEO (por ejemplo LEONARDO, VOLEO, PALEONTOLOGO).

Como ves, esto tiene sus pro y sus contras, creo que lo que propone ellgon es que pongas algo como esto:

Código MySQL:
Ver original
  1. SELECT * FROM usuarios WHERE username LIKE CONCAT('%', ALGO, '%') AND nombre LIKE CONCAT('%', ALGO, '%')
De esta manera cuando tu variable ALGO no exista el resultado quedaría como LIKE '%%', lo que te traería todos los registros.

También dale un vistazo a Sentencias Preparadas, creo que en definitiva es lo que más te conviene hacer, Si tu variable ALGO es vacía simplemente no agregas la sección WHERE a tu sentencia, y si trae algo, pues agregas el WHERE tal y como lo estás poniendo al inicio.

Saludos
Leo.
  #5 (permalink)  
Antiguo 17/06/2011, 13:44
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Mensaje Respuesta: como indicar cualquier cosa en una consulta

Hola richardo8825,

No entiendo bien la lógica de la consulta, sin embargo, puedes usar algo como:

Código SQL:
Ver original
  1. SET @tuvariable = ''; /* Test 1 */
  2. /* SET @tuvariable = 'algo'; */ /* Test 2 */
  3. SELECT * FROM usuarios WHERE
  4. (username = @tuvariable OR IF(CHAR_LENGTH(TRIM(@tuvariable)) > 0, @tuvariable, NULL) IS NULL)
  5. AND
  6. (nombre = @tuvariable OR IF(CHAR_LENGTH(TRIM(@tuvariable)) > 0, @tuvariable, NULL) IS NULL);

Espero te sea útil.

Última edición por wchiquito; 17/06/2011 a las 14:36
  #6 (permalink)  
Antiguo 17/06/2011, 15:06
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 14 años
Puntos: 0
Respuesta: como indicar cualquier cosa en una consulta

Gracias por sus ayudas.

A la final lo eh conseguido con el like '%algo%' que cuando es vacio me retorna todos los campos.

gracias de nuevo

Etiquetas: dato, query
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:49.