Autor Tema: [SOLUCIONADO] como filtrar por 2 campos, y un solo texto?  (Leído 8585 veces)

0 Usuarios y 1 Visitante están viendo este tema.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
[SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
« 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!
« última modificación: Enero 31, 2010, 09:36:28 pm por coco »
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #1 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
Me encuentras en YAcosta.com

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #2 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.
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #3 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.
Me encuentras en YAcosta.com

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #4 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
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #5 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)
Me encuentras en YAcosta.com

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:como filtrar por 2 campos, y un solo texto?
« Respuesta #6 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!
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:[SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
« Respuesta #7 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.

coco

  • Administrador
  • Terabyte
  • *****
  • Mensajes: 548
  • Reputación: +63/-3
    • Ver Perfil
Re:[SOLUCIONADO] como filtrar por 2 campos, y un solo texto?
« Respuesta #8 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
'-     coco
(No me cabe: Java, Python ni Pascal)
SQLite - PIC 16F y 18F - ARM STM32 - ESP32 - Linux Embebido - VB6 - Electronica - Sonido y Ambientacion