Visual Basic Foro

Programación => Bases de Datos => Mensaje iniciado por: coco en Enero 31, 2010, 03:18:56 am

Título: [SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
Publicado por: coco en Enero 31, 2010, 03:18:56 am
Si no me explique bien, aca explico:
Tengo una tabla, donde quiero buscar por 2 columnas, las cuales son "nombre" y "apellido". Tengo un texto, que seria un mini filtro, en el cual puede estar el nombre y el apellido o solo el apellido. En un principio pense hacerlo con Split en VB, pero llegue a la conclusion de que si el apellido es compuesto (es decir, tiene espacios), este metodo no funcionaria.
Como tendria que ser la consulta SQL si quiero hacer esto?

yo estaba pensando en :
Código: [Seleccionar]
SELECT * FROM pacientes WHERE pacientes.nombre LIKE "Filtro%" OR pacientes.apellido LIKE "filtro%" (donde filtro es la variable del texto que mencione antes)

PD: estoy usando SQLite (no creo que esto afecte en nada!)

saludos!
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: YAcosta en Enero 31, 2010, 04:56:53 am
No entiendo cual es la pregunta.
En todo caso probé tu código con una tabla mía y dos columnas haciendo dos filtros con un mismo texto y me funciono perfecto.

SELECT *
FROM MPR
WHERE (DETALLE LIKE 'STEREO%') OR NOMBRE LIKE 'STEREO%'

y obtuve 12 registros que satisfacen la consulta. 3 tenian STEREO en MPR.DETALLE y 9 en MPR.NOMBRE
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: coco en Enero 31, 2010, 02:01:47 pm
No entiendo cual es la pregunta.
En todo caso probé tu código con una tabla mía y dos columnas haciendo dos filtros con un mismo texto y me funciono perfecto.

SELECT *
FROM MPR
WHERE (DETALLE LIKE 'STEREO%') OR NOMBRE LIKE 'STEREO%'

y obtuve 12 registros que satisfacen la consulta. 3 tenian STEREO en MPR.DETALLE y 9 en MPR.NOMBRE

Osea lo que yo decia era filtrar por nombre y apellido, pero que esten en un solo text box, suponiendo lo siguiente:
en el textbox tener "ramirez jose luis".

A lo que voy, es de alguna forma obtener los usuarios que tengan de apellido "ramirez" y de nombre "jose luis". Y no lo quiero hacer con Split en VB ya que puede haber un apellido con mas de 1 palabra (ejemplo: "ramirez hernandez").

No se si sera posible esto.
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: YAcosta en Enero 31, 2010, 06:42:32 pm
Ah ya entendí, si ta jodido, digo, si tu mandas la cadena "ramirez jose luis" con el like, pues nunca va a encontrar en el campo Apellido los que empiecen con "ramirez jose luis" o en nombre nunca los que empiecen con "ramirez jose luis". Siempre obtendrás 0 registros, es decir, siguiendo tu ejemplo, ¿como saber si "jose" es parte del apellido o es parte del nombre?
Lo único que se me ocurre es de pronto usar un nuevo campo o la función left para manipular la cadena, lamento no poder ayudarte mas.
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: coco en Enero 31, 2010, 07:09:59 pm
Ah ya entendí, si ta jodido, digo, si tu mandas la cadena "ramirez jose luis" con el like, pues nunca va a encontrar en el campo Apellido los que empiecen con "ramirez jose luis" o en nombre nunca los que empiecen con "ramirez jose luis". Siempre obtendrás 0 registros, es decir, siguiendo tu ejemplo, ¿como saber si "jose" es parte del apellido o es parte del nombre?
Lo único que se me ocurre es de pronto usar un nuevo campo o la función left para manipular la cadena, lamento no poder ayudarte mas.


estaba pensando en hacer tantos LIKE "..." (y OR) como sea necesario (tomando en cuenta la cantidad de espacios) y cada item sea una palabra, creo que es la unica salida.. que decis?

saludos y gracias
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: YAcosta en Enero 31, 2010, 09:01:52 pm
Si en eso coincido, me parece tambien que es la unica salida. Ojo, considera que en algunos casos tendras 2 espacios, en otros 3 y en otros hasta 4.
Ejemplo
Juan Perez (1 espacio)
Juan Carlos Perez (2 espacios)
Juan Carlos Perez Godoy (3 espacios)
Juan Carlos Perez La Rosa (4 espacios)
Título: Re:como filtrar por 2 campos, y un solo texto?
Publicado por: coco en Enero 31, 2010, 09:35:47 pm
Si en eso coincido, me parece tambien que es la unica salida. Ojo, considera que en algunos casos tendras 2 espacios, en otros 3 y en otros hasta 4.
Ejemplo
Juan Perez (1 espacio)
Juan Carlos Perez (2 espacios)
Juan Carlos Perez Godoy (3 espacios)
Juan Carlos Perez La Rosa (4 espacios)

Split en VB y al cuerno :D

voy a terminar implementando eso.

saludos!
Título: Re:[SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
Publicado por: seba123neo en Enero 31, 2010, 10:27:38 pm
¿ quien te obligo a hacerlo asi ? el enemigo :P la verdad nunca lo he visto asi, siempre se pone un textbox para nombre y otro para apellido y cada uno busca en su campo correspondiente, es lo mas facil que hay, la verdad que es un lio al pe.....

saludos.
Título: Re:[SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
Publicado por: coco en Enero 31, 2010, 11:28:13 pm
¿ quien te obligo a hacerlo asi ? el enemigo :P la verdad nunca lo he visto asi, siempre se pone un textbox para nombre y otro para apellido y cada uno busca en su campo correspondiente, es lo mas facil que hay, la verdad que es un lio al pe.....

saludos.

si si, el tema es que "me pidieron" que sea asi, yo tambien dije exactamente lo mismo.. pero bueno, ya va asi :D

saludos