Todas las palabras

13/05/2005 - 09:54 por Carlos Bladinieres | Informe spam
Hola a todos,

Tengo un pequeño problema y se que me ayudaran a resolverlo.

Tengo una tabla con N campos de texto y necesito meter una forma tipo
busqueda en la que es necesario que me devuelva los registros en los que se
encuentran TODAS las palabras que se escribieron en la busqueda aunque estas
palabras se encuentren en diferentes campos o en uno solo del mismo
registro.

A través de un SPLIT ya saque todos las palabras contenidas en la cadena de
busqueda, el problema es el Query o Secuencia de SQL.

Va un ejemplo:

Tabla: Automoviles

Campo escrito en la Busqueda: 150HP Gasolina Electrico Aire Acondicionado

Registro 1 de ejemplo:
Potencia: 20HP
Combustible: Gasolina
Equipamiento: Electrico, con Aire Acondicionado
Frenos: De Aire

Registro 2 de ejemplo:
Potencia: 150HP
Combustible: Gasolina
Equipamiento: Electrico, con Aire Acondcionado
Frenos: Discos en las 4 Ruedas

En este caso lo que necesito es que la busqueda solo me regrese el registro
2, ya que el registro 1 (aunque tiene todos las demas palabras) no tiene la
"palabra": 150HP y todas las palabras que se solicitaron en la busqueda
estan contenidas en alguna parte del registro 2.
En algunos casos puede ser que todas las palabras de la busqueda esten
contenidas en un solo campo del registro y necesito que tambien me devuelva
esos registros.

Espero haber sido claro y que alguien me pueda ayudar o dar una orientada de
como hacer la secuencia de SQL para obtener esto.

Gracias desde ya,

Carlos
 

Leer las respuestas

#1 Manuel Vera
13/05/2005 - 16:13 | Informe spam
Una forma de hacerlo es:

todas lasa palabraas en el SPLIT las metes en una tabla temporal, digamos
tblPalabras ( palabra varchar(20) )

luego, para la busqueda haces algo como

select *
from miTabla as A, tblPalabras as p
where A.campo1 + ... + A.campoN
LIKE '%' + p.palabra + '%'

o tambien,

select *
from miTabla as A, tblPalabras as p
where A.campo1 LIKE '%' + p.palabra + '%'

or A.campoN LIKE '%' + p.palabra + '%'

No creo q sea muy eficiente pero si funcional
Salu2
MV

"Carlos Bladinieres" <carlos(arroba)xlso(punto)com> wrote in message
news:
Hola a todos,

Tengo un pequeño problema y se que me ayudaran a resolverlo.

Tengo una tabla con N campos de texto y necesito meter una forma tipo
busqueda en la que es necesario que me devuelva los registros en los que


se
encuentran TODAS las palabras que se escribieron en la busqueda aunque


estas
palabras se encuentren en diferentes campos o en uno solo del mismo
registro.

A través de un SPLIT ya saque todos las palabras contenidas en la cadena


de
busqueda, el problema es el Query o Secuencia de SQL.

Va un ejemplo:

Tabla: Automoviles

Campo escrito en la Busqueda: 150HP Gasolina Electrico Aire Acondicionado

Registro 1 de ejemplo:
Potencia: 20HP
Combustible: Gasolina
Equipamiento: Electrico, con Aire Acondicionado
Frenos: De Aire

Registro 2 de ejemplo:
Potencia: 150HP
Combustible: Gasolina
Equipamiento: Electrico, con Aire Acondcionado
Frenos: Discos en las 4 Ruedas

En este caso lo que necesito es que la busqueda solo me regrese el


registro
2, ya que el registro 1 (aunque tiene todos las demas palabras) no tiene


la
"palabra": 150HP y todas las palabras que se solicitaron en la busqueda
estan contenidas en alguna parte del registro 2.
En algunos casos puede ser que todas las palabras de la busqueda esten
contenidas en un solo campo del registro y necesito que tambien me


devuelva
esos registros.

Espero haber sido claro y que alguien me pueda ayudar o dar una orientada


de
como hacer la secuencia de SQL para obtener esto.

Gracias desde ya,

Carlos


Preguntas similares