Foros del Web » Programación para mayores de 30 ;) » Java »

Consulta Select

Estas en el tema de Consulta Select en el foro de Java en Foros del Web. Tengo que hacer una consulta con una Select pasando algunos parametros para realizar una busqueda en funcion de esos parametros. Como consigo hacer que si ...
  #1 (permalink)  
Antiguo 07/01/2009, 05:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 0
Consulta Select

Tengo que hacer una consulta con una Select pasando algunos parametros para realizar una busqueda en funcion de esos parametros.

Como consigo hacer que si por ejemplo un parametro esta vacio no lo tenga en cuenta a la hora de hacer la select?

Me explico:Imaginemos que quiero hacer la busqueda de una persona por nombre y apellidos desde dos jTextfield.Imaginemos que solo introducimos el nombre y que los apellidos lo dejamos en blanco porque queremos una consulta con todas las personas con ese nombre independientemente de los apellidos.Como hacemos para dejar el parametro apellidos en blanco y no lo tenga en cuenta en la select?Decir que la funcion tiene que recibir siempre esos dos parametros.

Gracias de antemano.
  #2 (permalink)  
Antiguo 07/01/2009, 08:54
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Consulta Select

Como haces esa consulta? Con JDBC, Hibernate, Ibatis...

Danos mas datos para poder ayudarte
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #3 (permalink)  
Antiguo 07/01/2009, 09:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta Select

Cita:
Iniciado por TresPuntoDos Ver Mensaje
Como haces esa consulta? Con JDBC, Hibernate, Ibatis...

Danos mas datos para poder ayudarte
con JDBC
  #4 (permalink)  
Antiguo 07/01/2009, 10:32
Avatar de TresPuntoDos  
Fecha de Ingreso: septiembre-2008
Ubicación: Madrid, España
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Consulta Select

Pues cuando vayas a construir tu String de la query solo tienes que poner un if para saber si tiene o no tiene valor y en funcion de eso añadir o no ese parametro
__________________
Tres punto Dos - Mi Blog sobre J2EE, Java, Struts y Diseño Web
Proyecto BloJ - Crea tu blog Java
  #5 (permalink)  
Antiguo 07/01/2009, 11:06
 
Fecha de Ingreso: diciembre-2007
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta Select

Cita:
Iniciado por TresPuntoDos Ver Mensaje
Pues cuando vayas a construir tu String de la query solo tienes que poner un if para saber si tiene o no tiene valor y en funcion de eso añadir o no ese parametro
Lo de las If lo habia pensado ya pero el problema es que mi Select necesita 4 parametros diferentes y tendria que hacer un porron de If para hacer todas las combinaciones posibles.Es por lo que intuyo que debe haber "algo" en lenguaje SQL que haga algo como esto:

Select * from personas where persona.nombre='"+nombre+"' and nombre<>null.Osea que te pille el parametro si nombre es distinto de null,nose si me he explicado bien.
  #6 (permalink)  
Antiguo 07/01/2009, 12:13
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Consulta Select

Hola,

Cita:
Iniciado por acer Ver Mensaje
... necesita 4 parametros diferentes y tendria que hacer un porron de If ...
Si estás construyendo la instrucción SQL en un String, no te queda más que usar el keyword 'if' e ir construyendo cada opción, pero no de la manera como lo estas plantenado, puesto que solo agregas las opciones si se aplican:

Código:
if (nombre != null) if (!nombre.isEmpty())
b.append(" and nombre = '" + nombre + "'");

if (apellido != null) if (!apellido.isEmpty())
b.append(" and apellido = '" + apellido + "'");
Si estás usando procedimientos almacenados, entonces tienes acceso a parámetros y puedes revisar si son nulos o vacíos.

Código:
  select * from table16 where
  (nombre = p_nombre or p_nombre is null) and
  (apellido = p_apellido or p_apellido is null)
Saludos,
  #7 (permalink)  
Antiguo 07/01/2009, 13:22
 
Fecha de Ingreso: diciembre-2007
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta Select

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Si estás construyendo la instrucción SQL en un String, no te queda más que usar el keyword 'if' e ir construyendo cada opción, pero no de la manera como lo estas plantenado, puesto que solo agregas las opciones si se aplican:

Código:
if (nombre != null) if (!nombre.isEmpty())
b.append(" and nombre = '" + nombre + "'");

if (apellido != null) if (!apellido.isEmpty())
b.append(" and apellido = '" + apellido + "'");
Si estás usando procedimientos almacenados, entonces tienes acceso a parámetros y puedes revisar si son nulos o vacíos.

Código:
  select * from table16 where
  (nombre = p_nombre or p_nombre is null) and
  (apellido = p_apellido or p_apellido is null)
Saludos,
b.append-->b supongo que es la consulta select,pero en el netbeans no me sale append,tengo que hacerlo con concat y no sé porque no me lo concatena,alguna idea?

Gracias
  #8 (permalink)  
Antiguo 07/01/2009, 18:53
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Consulta Select

Hola,

Cita:
Iniciado por acer Ver Mensaje
b.append-->b supongo que es la consulta select,pero en el netbeans no me sale append,tengo que hacerlo con concat y no sé porque no me lo concatena,alguna idea?

Gracias
Era simplemente una idea básica ... append() es una función de la clase StringBuffer, pero lo puedes hacer simplemente con:

resultado = resultado + " and nombre = '" + nombre + "'";.

Lo que quería expresar era un concepto, pero tienes que desarrollarlo personalmente, es muy probable que si yo lo escribo no te sirva exactamente para lo que quieres hacer.

if (no es nulo) if (no está vacío) entonces
agregarle al resultado parte de la consulta con and.

Saludos,
  #9 (permalink)  
Antiguo 08/01/2009, 03:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 32
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Consulta Select

Ya me funciona correctamente.He tenido que poner algun if mas para contemplar todas las posibilidades pero ya me va genial.Muchas gracias TresPuntoDos y HackmanC.
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 02:45.