Foros del Web » Programando para Internet » ASP Clásico »

Buscador y primero los que tienen dos palabras

Estas en el tema de Buscador y primero los que tienen dos palabras en el foro de ASP Clásico en Foros del Web. Hola. Estoy desarrollando un pequeño buscador que permita teclear varias palabras para buscar por ellas, de momento solo trabajo con dos. La tabla donde están ...
  #1 (permalink)  
Antiguo 14/03/2003, 13:40
 
Fecha de Ingreso: noviembre-2001
Ubicación: Granada (España)
Mensajes: 22
Antigüedad: 23 años, 5 meses
Puntos: 0
Buscador y primero los que tienen dos palabras

Hola.

Estoy desarrollando un pequeño buscador que permita teclear varias palabras para buscar por ellas, de momento solo trabajo con dos.

La tabla donde están las palabras y el documento al que señalan entre otros tiene los campos:

PALABRA que almacena una palabra clave de ese documento.
ID_DOCUMENTO que señala al documento.

Por cada palabra clave que tiene un documento hay un registro en la tabla del buscador. Como es de suponer un documento puede tener varias palabras claves y aparecer varias veces en la tabla del buscador.

La orden SQL que utilizo para localizar los documentos que tienen las palabras perro y coche es:

select * from buscador where palabra='perro' or palabra='coche' order by fecha DESC,id_documento;

Con esta orden consigo que aparezcan primero las altas en el buscador más recientes y además si un documento tiene las dos palabras obtengo los dos registros de ese documento juntos. Luego en el script de ASP me encargo de mostrar solo un registro por cada documento, aunque aparezca dos veces.

Mi problema es que quiero que aparezcan primero los documentos que tienen las dos palabras, después los que tienen solo casa y luego los que tienen solo perro.

Alguien se le ocurre como lo puedo hacer. Mediante SQL o con algún array en memoria, no se… si alguien me puede orientar muchas gracias.

Un saludo.

Oscar
  #2 (permalink)  
Antiguo 17/03/2003, 10:55
Avatar de Ellyza  
Fecha de Ingreso: agosto-2002
Ubicación: España
Mensajes: 176
Antigüedad: 22 años, 9 meses
Puntos: 0
Así de pronto se me ocurre que hagas tres consultas distintas y que las muestres sólo si se obtienen resultados:

sql1= "select * from buscador where palabra='perro' and palabra='coche' order by fecha DESC,id_documento"

sql2= "select * from buscador where palabra='perro' order by fecha DESC,id_documento"

sql1= "select * from buscador where palabra='coche' order by fecha DESC,id_documento"

UN poco rústico pero se soluciona el problema.

Saludos.-
__________________
<<<<<<<<>>>>>>>>
Algo tiene que cambiar.
¿ O NO ?
<<<<<<<<>>>>>>>>
  #3 (permalink)  
Antiguo 19/03/2003, 10:55
 
Fecha de Ingreso: noviembre-2001
Ubicación: Granada (España)
Mensajes: 22
Antigüedad: 23 años, 5 meses
Puntos: 0
Hola de nuevo.

Gracias Ellyza por tu respuesta, pero no sirve. La primera orden SQL no funcionaria ya que en cada registro solo hay un campo palabra y jamas se cumpliria la condicion (palabra='perro' and palabra='coche').

De todas formas muchas gracias.

Mi amigo Carlos me ha dado la solución, para obtener los registros que tengan las dos palabras:

select buscador.id_documento,buscador.fecha from buscador,
(SELECT id,fecha,id_documento,palabra FROM buscador where palabra='coche')as t
where buscador.palabra='casa' and t.id_documento=buscador.id_documento order by buscador.fecha desc

Hay un select que busca la palabra coche y despues hay otro select que busca casa pero solo devuelve los registros que aparezcan en el select anterior.

A partir de aqui con programación y un par de select más se puede hacer lo que queria...

Muchas gracias.

Oscar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:05.