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

es posible hacer que un buscador busque en varias tablas?

Estas en el tema de es posible hacer que un buscador busque en varias tablas? en el foro de ASP Clásico en Foros del Web. buscador en varias tablas es posible hacer que un buscador busque en varias tablas? hola, tengo montado un sencillo buscador con un form y campo ...
  #1 (permalink)  
Antiguo 21/01/2008, 11:53
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
es posible hacer que un buscador busque en varias tablas?

buscador en varias tablas

es posible hacer que un buscador busque en varias tablas?

hola, tengo montado un sencillo buscador con un form y campo de texto.El form apunta como acccion a una pàgina asp. en la cual se ven los resultados

la pàgina que devuelve los resultados hace una busqueda sobre unos campos (tit_cast y txt_cast) en una tabla determinada (Comercial) y mediante una plantilla devuelve los resultados:

<%
Dim resultados
Dim resultados_cmd
Dim resultados_numRows

Set resultados_cmd = Server.CreateObject ("ADODB.Command")
resultados_cmd.ActiveConnection = MM_conexion_STRING
resultados_cmd.CommandText = "SELECT * FROM comercial WHERE tit_cast & txt_cast LIKE ? ORDER BY id DESC"
resultados_cmd.Prepared = true
resultados_cmd.Parameters.Append resultados_cmd.CreateParameter("param1", 200, 1, 255, "%" + resultados__MMColParam + "%") ' adVarChar

Set resultados = resultados_cmd.Execute
resultados_numRows = 0
%>

mi pregunta es si es posible que busque a la vez en varias tablas diferentes, por ejemplo las tablas Comercial y NoComercial y dentro de ellas, los campos tit_cast y txt_cast de cada una de ellas?

gracias de antemano

salut

Última edición por potenkin; 22/01/2008 a las 03:05
  #2 (permalink)  
Antiguo 21/01/2008, 14:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: es posible hacer que un buscador busque en varias tablas?

Utiliza la instruccion UNION, solo asegúrate que el número de campos que traigas de cada tabla sea el mismo:

Código:
SELECT campo1, campo2, campoN FROM comercial WHERE tit_cast LIKE ? OR txt_cast LIKE ?
UNION
SELECT campo1, campo2, campoN FROM nocomercial WHERE tit_cast LIKE ? OR txt_cast LIKE ?
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 22/01/2008, 03:23
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

perdona, no entiendo que es campo1, campo2, campoN

las tablas en las que buscar son: Comercial y NoComercial
y los campos dentro de cada tabla:
en Comercial: tit_cast y txt_cast
en NoComercial: tit_cast y txt_cast


salut
  #4 (permalink)  
Antiguo 22/01/2008, 03:53
Avatar de define  
Fecha de Ingreso: enero-2008
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

sql.1keydata.com/es/sql-union.php

mirate esta pagina, explican muy bien como usar UNION de sql.
  #5 (permalink)  
Antiguo 22/01/2008, 10:39
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: es posible hacer que un buscador busque en varias tablas?

Cita:
Iniciado por potenkin Ver Mensaje
perdona, no entiendo que es campo1, campo2, campoN

las tablas en las que buscar son: Comercial y NoComercial
y los campos dentro de cada tabla:
en Comercial: tit_cast y txt_cast
en NoComercial: tit_cast y txt_cast


salut
Son simplemente los campos que quieres "traer" en tu consulta de seleccion.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 22/01/2008, 11:20
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

gracias a los dos,
esta muy claro...perooooo, (siempre hay un pero) tengo un problema con las comillas, como tengo que ponerlas? de esta forma me da error

salut


resultados_cmd.CommandText = "SELECT tit_cat, txt_cat FROM comercial WHERE tit_cat LIKE ? OR txt_cat LIKE ? ORDER BY id DESC
UNION
SELECT tit_cat, txt_cat FROM territorio WHERE tit_cat LIKE ? OR txt_cat LIKE ? ORDER BY id DESC"
resultados_cmd.Prepared = true
resultados_cmd.Parameters.Append resultados_cmd.CreateParameter("param1", 200, 1, 255, "%" + resultados__MMColParam + "%")
  #7 (permalink)  
Antiguo 22/01/2008, 11:42
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: es posible hacer que un buscador busque en varias tablas?

¿Cuáles comillas?
Estás utilizando un query parametrizado, no necesitas comillas al concatenar las variables si a eso te refieres, de hecho no tienes que concatenar variables, solo tienes que crear un parámetro por cada signo de ? que tenga tu query.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 22/01/2008, 11:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

pues después de

resultados_cmd.CommandText =

sin comillas me da error
  #9 (permalink)  
Antiguo 22/01/2008, 11:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: es posible hacer que un buscador busque en varias tablas?

Claro, las comillas deben ir alrededor de toda la sentencia pues la propiedad commandtext debe ser un string

Código:
cmd.CommandText = "SELECT....UNION SELECT...."
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 23/01/2008, 02:32
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

pues da error, error '80040e10'

tengo el seiguiente codigo, para recoger el valor del form (clave), y despues buscar en las tablas, tal y como esta abajo funciona correctamente buscando solo en la tabla comercial y los campos tit_cast y txt_cast


<%
Dim resultados__MMColParam
resultados__MMColParam = "1"
If (Request.Form("clave") <> "") Then
resultados__MMColParam = Request.Form("clave")
End If
%>
<%
Dim resultados
Dim resultados_cmd
Dim resultados_numRows

Set resultados_cmd = Server.CreateObject ("ADODB.Command")
resultados_cmd.ActiveConnection = MM_conexion_STRING
resultados_cmd.CommandText = "SELECT * FROM comercial WHERE tit_cat & txt_cat LIKE ? ORDER BY id DESC"
resultados_cmd.Prepared = true
resultados_cmd.Parameters.Append resultados_cmd.CreateParameter("param1", 200, 1, 255, "%" + resultados__MMColParam + "%") ' adVarChar

Set resultados = resultados_cmd.Execute
resultados_numRows = 0
%>


si le incluyo UNION para que busque también en la tabla territorio, y los campos tit_cast y txt_cast de la siguiente manera


<%
Dim resultados__MMColParam
resultados__MMColParam = "1"
If (Request.Form("clave") <> "") Then
resultados__MMColParam = Request.Form("clave")
End If
%>
<%
Dim resultados
Dim resultados_cmd
Dim resultados_numRows

Set resultados_cmd = Server.CreateObject ("ADODB.Command")
resultados_cmd.ActiveConnection = MM_conexion_STRING
resultados_cmd.CommandText = "SELECT tit_cat, txt_cat FROM comercial WHERE tit_cat LIKE ? OR txt_cat LIKE ? ORDER BY id DESC UNION SELECT tit_cat, txt_cat FROM territorio WHERE tit_cat LIKE ? OR txt_cat LIKE ? ORDER BY id DESC"
resultados_cmd.Prepared = true
resultados_cmd.Parameters.Append resultados_cmd.CreateParameter("param1", 200, 1, 255, "%" + resultados__MMColParam + "%") ' adVarChar

Set resultados = resultados_cmd.Execute 'linea 34
resultados_numRows = 0
%>


da el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
No se han especificado valores para algunos de los parámetros requeridos.
/cat/buscar.asp, línea 34


la linea 34 es la antepenultima

Set resultados = resultados_cmd.Execute

¿¿¿¿ ????
  #11 (permalink)  
Antiguo 23/01/2008, 08:15
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Re: es posible hacer que un buscador busque en varias tablas?

Tal como dice el mensaje de error, la sentencia usa DOS parámetros (tit_cat LIKE ? y txt_cat LIKE ? ) y tu solo estas definiendo uno.

Saludos
  #12 (permalink)  
Antiguo 24/01/2008, 01:52
 
Fecha de Ingreso: septiembre-2005
Mensajes: 202
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: es posible hacer que un buscador busque en varias tablas?

y como tendria que hacer para definir dos?

resultados_cmd.Parameters.Append resultados_cmd.CreateParameter("param1", 200, 1, 255, "%" + resultados__MMColParam + "%")

Última edición por potenkin; 24/01/2008 a las 10:03
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:50.