MySQL - Duda SELECT

 
Vista:

Duda SELECT

Publicado por Antonio (2 intervenciones) el 26/02/2010 19:04:25
Buenas tardes.

Estoy realizando un programa en JAVA que utiliza una BD en MySQL.

El programa tiene varios campo para rellerar, correspondiendo cada uno de ellos a una columna de la base de datos. La idea es proporcionar un motor de busqueda dentro de la BD.

Solo algunos campos son obligatorios de rellenar.

Supongamos que el us. no rellena el campo "apodo" (no es obligatorio). Cuando yo haga el SELECT para buscar en la BD, tras el WHERE deberia colocar, entre otras cosas:

----------------------
SELECT * FROM programa WHERE nombre LIKE nombre_entrada AND apodo LIKE apodo_entrada;
-----------------------

Suponiendo que nombre_entrada y apodo_entrada son los campos que rellena el us. en la aplicacion.

Mi duda es como puedo hacer que la comparacion de apodo se ignore siempre y cuando el us. lo haya dejado en blanco.

Espero podais ayudarme porque realmente no se como hacerlo (soy un poco novato en el tema).

Muchas gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda SELECT

Publicado por Gonzalo (339 intervenciones) el 28/02/2010 00:53:21
SELECT * FROM programa
WHERE IFNULL(nombre, '') LIKE nombre_entrada OR IFNULL(apodo, '') LIKE apodo_entrada;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda SELECT

Publicado por Antonio (2 intervenciones) el 07/04/2010 02:34:51
Muchas gracias, algo tardias, eso si....

Pero tras darle muchas vueltas, me he dado cuenta de que no funciona correctamente. Me explico:

Al poner un OR valdran todas aquellas entradas que cumplan uno de los dos requisitos. Bien que tengan el mismo nombre o el mismo apodo. Quiero decir que en el caso de que el us. rellene ambos campos (nombre y apodo), haria validas todas las entradas que cumplieran una de las dos opciones.

Pense que la solucion seria sencilla. Cambiar el OR por un AND y listo. Pero al hacer esto, no devuelve ningun resultados cuando dejamos un campo vacion.

Con la funcion IFNULL hacemos que nombre tome valor ''. El problema es que el campo nombre no es un string vacio. El us. lo selecciona o lo deja vacion a traves de una interfaz grafica (Swing) y mas concretamente, un ComboBox. Cuando el us. no selecciona nada, el valor de la variable es NULL. He probado lo siguiente. pero no funciona:

SELECT * FROM programa
WHERE IFNULL(nombre, null) LIKE nombre_entrada OR IFNULL(apodo, null) LIKE apodo_entrada;


Espero que me hayais entendido, y agradeceria cualquier ayuda.

Muchas gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar