Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/11/2003, 09:06
Avatar de BrujoNic
BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 6 meses
Puntos: 655
Al principio de tu mensaje interpreté que el valor a buscar te lo daban en cualquier orden y en una sola hilera, No en 3 y cualquiera pudiera ir sin valores. Ahora tengo más claro lo que necesitas.

Intenta la opción de Teri. Si no te funciona, te dejo otra forma la cual creo que puede funcionarte y lo encontre en el manual de MySQL 6.3.1.4 Control Flow Functions. Es usando un IF. Donde tengo dudas es que ahi lo usan dentro del SELECT y NO dentro de un WHERE. Además, te dejo la referencia de otras funciones que vamos a emplear 6.3.2 String Functions

Código PHP:
SELECT nombreapellido1apellido2 FROM tnombre
WHERE
nombre LIKE CONCAT
("%"TRIM(IF(LENGTH(TRIM($nomb)) > 0$nombnombre)), "%") AND
apellido1 LIKE CONCAT("%"TRIM(IF(LENGTH(TRIM($apel1)) > 0$apel1apellido1)), "%") AND
apellido2 LIKE CONCAT("%"TRIM(IF(LENGTH(TRIM($apel2)) > 0$apel2apellido2)), "%"
Voy a tratar de explicar un poco el funcionamiento de este SELECT más que todo en la parte del WHERE.

Primero que todo, voy a suponer que estas usando PHP para desarrollar por lo que vamos a usar 3 variables $nomb, $apel1 y $apel2. Antes de realizar el SELECT, debes asegurarte cuales variables estan en nulo y moverles un blanco " ".

Ahora lo que se va a hacer es evaluar cada condición, ejemplo:
nombre LIKE CONCAT("%", TRIM(IF(LENGTH(TRIM($nomb)) > 0, $nomb, nombre)), "%").

El CONCAT lo que va a hacer es poner %resultado%, o sea, los signos de "%" al principio y al final.

El TRIM va a quitar TODOS los espacios o blancos a la izquierda y derecha.

El IF funciona así IF(1>0, "VERDADERO", "FALSO) si uno es mayor a cero, el resultado va a ser la literal "VERDADERO", en caso contrario, "FALSO".

El LENGTH, verifica si la hilera o variable no esté vacia quitando primero los blancos con TRIM. Si el resultado del IF es mayor a cero, evalúa lo que trae la variable, en caso ser cero, deja el contenido del campo nombre. ¿Porqué se hace así? Esto es para que si se dejan en blanco todos los valores introducidos por el usuario, muestre todo el contenido de la tabla. En caso de introducir algún valor en alguno de los campos, evalúa la variable o variables introducida y donde no se puso nada, evalua el contendio del campo dentro de la tabla.

Bueno, fue mucha explicación la cual espero sea clara y funcione.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL