Consulta de Campos

Mi pregunta es la siguiente. Estoy haciendo un buscador sobre una base de datos Mysql, la idea es buscar libros (por titulo y descripción). Para esto uso en el query la clausula LIKE y la búsqueda se realiza bien. ¿Lo qué necesito saber es si hay alguna forma de saber si el registro resultante del query fue por encontrar coincidencia en el campo nombre o descripción? Ya que si es porque encontró coincidencia en el nombre debo darle mayor prioridad (mostrarlo de primero). Saludos

1 Respuesta

Respuesta
1
Utiliza al final de la cadena:
"SELECT * FROM LIBROS [...] ORDER BY TITULO, DESCRIPCION;"
De esta forma, el orden de preferencia de tu consulta se realizará en primer lugar por TITULO, y luego por DESCRIPCIÓN.
Saludos. Gracias por responder. Bueno revisando tu respuesta, el usar el order by siempre me ordenará los resultados por titulo y descripción pero eso no es lo que quiero que suceda en el buscador. Te explico, supón que yo hago una búsqueda por los libros que tengo en su titulo o descripción la palabra "ASP", resulta que de esta consulta hay 2 resultados, un registros en la que el titulo es "Trucos de ASP", descripción: "Todo sobre este lenguaje", el otro registro resultante es "Programación Web" descripción: "Algoritmos utilizando el lenguaje ASP". Estos registros resultaron porque el primero en el titulo tiene la palabra "ASP", y el segundo porque en la descripción está la palabra "ASP". Utilizando el ORDER BY TITULO, DESCRIPCIÓN me colocaría primero el libro "Programación Web" algo que no me sirve ya que debería estar primero el libro "Trucos de ASP" ya que posee la palabra en el titulo (y por lógica es de mayor relevancia). Lo que pasa es que quisiera que el mismo query me en cada registro que retorna si fue porque encontró la palabra en el titulo o en la descripción (o ambos). Saludos
Vaya, hay tres soluciones. La primera es utilizar una función específica creada en SQL (Complicado), la segunda, es crear una función condicional en el lenguaje de script del servidor (fácil). Y la tercera (la más fácil) es obtener dos recordset distintos, es decir, crear dos instancias de los conjuntos de registros por ejemplo:
Cuando haces la conexión:
Set rs1 = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(OrigenDatos)
Rs1. Open SQL_titulos, Conn, 2, 3
Rs2. Open SQL_descripciones, Conn, 2, 3
Y simplemtente muestras el primer recorset rs1 y luego el rs2.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas