Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda en select de 2 tablas!

Estas en el tema de ayuda en select de 2 tablas! en el foro de Bases de Datos General en Foros del Web. Hola, Estoy tratando de hacer una busqueda, de 2 tablas, pero me me muestra un error, este es el codigo: Código: strSql2 = "Select MD5(h_2003.notaid) ...
  #1 (permalink)  
Antiguo 05/07/2005, 10:06
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
Exclamación ayuda en select de 2 tablas!

Hola,
Estoy tratando de hacer una busqueda, de 2 tablas, pero me me muestra un error, este es el codigo:
Código:
strSql2 = "Select MD5(h_2003.notaid) as notaid, h_2003.cabeza, h_2003.Fecha, h_2003.foto, h_2003.nota, h_2003.seccion, " &_
               "MD5(notas.notaid) as notaid, notas.cabeza, notas.Fecha, notas.foto, notas.nota, notas.seccion "&_
               "from h_2003, notas" &_
                "where (h_2003.cabeza Like '%%" & texto1 & "%%' OR h_2003.nota Like '%%"& texto1 &"%%'  OR notas.cabeza Like '%%" & texto1 & "%%' OR notas.nota '%%" & texto1 & "%%') " &_
                "AND h_2003.activa='1' Order by h_2003.fecha desc, h_2003.hora desc LIMIT 0,100"&_
                "OR notas.activa='1' Order by notas.fecha desc, notas.hora desc LIMIT 0,100"
y este es el erro que muestra en pantalla

Código:
SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(h_2003.cabeza Like '%%fox%%' OR h_2003.nota Like '%%fox%%' OR
espero que alguien me pueda ayudar.

viva México!!!!

Última edición por chidomen; 05/07/2005 a las 10:09 Razón: error de texto
  #2 (permalink)  
Antiguo 05/07/2005, 10:25
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
por que usas doble %%?
  #3 (permalink)  
Antiguo 05/07/2005, 11:25
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
lo estás haciendo en visual basic o en un pl o en donde?

yo lo que veo es que pones

Cita:
Iniciado por chidomen
h_2003.cabeza Like '%%" & texto1 & "%%'
y a mi no me tiene mucho sentido, si quieres que texto1 sea una variable deberías cerrar las comillas simples y quedar algo así

Código:
h_2003.cabeza Like '%%"' & texto1 & '"%%'
porque sino estás diciendo que texto1 es un literal y no una variable

por otro lado estoy totalmente de acuerdo con jrp01 y no creo que haga falta poner 2 %

Espero que te sirva
  #4 (permalink)  
Antiguo 05/07/2005, 12:11
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
le estoy haciendo en ASP con Mysql, funciona muy bien cuando busco en una sola tabla. gracias
  #5 (permalink)  
Antiguo 05/07/2005, 12:14
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Por que no haces un inner join?
  #6 (permalink)  
Antiguo 06/07/2005, 09:39
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
como puedo hacer un inner join, que se busque un texto en dos campos de diferentes tablas?

gracias
  #7 (permalink)  
Antiguo 06/07/2005, 09:57
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Es algo asi
Código:
select tabla1.micampo,tabla2.otrocampo from tabla1 inner join tabla2 on(tabla1.idcampo=tabla2.idcampo2) where tabla1.micampo='hola'
  #8 (permalink)  
Antiguo 06/07/2005, 10:22
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
Estoy tratando de seguir lo que recomendaste pero no se en que estoy fallando, aqui esta el codigo:

Código:
Select MD5(h_2003.notaid) as notaid, h_2003.cabeza, h_2003.Fecha, h_2003.foto, h_2003.nota, h_2003.seccion, " &_
"MD5(notas.notaid) as notaid, notas.cabeza, notas.Fecha, notas.foto, notas.nota, notas.seccion "&_
"from h_2003 inner join notas" &_
"ON(h_2003.cabeza = notas.cabeza) where h_2003.cabeza='%%" & texto1 & "%%' "&_
"AND h_2003.activa='1' Order by h_2003.fecha desc, h_2003.hora desc LIMIT 0,100"&_
"OR notas.activa='1' Order by notas.fecha desc, notas.hora desc LIMIT 0,100"
y este es el error que me aparece:
Código:
Check the manual that corresponds to your MySQL server version for the right syntax to use near '(h_2003.cabeza = notas.cabeza) where h_2003.cabeza='%%fox%%
espero que me puedan ayudar
gracias!

Última edición por chidomen; 06/07/2005 a las 10:44 Razón: falto informacion
  #9 (permalink)  
Antiguo 06/07/2005, 10:42
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Puedes poner que contiene la cadena? para ver que esta mandando
  #10 (permalink)  
Antiguo 06/07/2005, 10:55
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
es una caja de texto, mandaria cualquier palabra.
al mandar la forma, asi lo recibe

texto=request("cabeza")
texto=replace(texto, "'", "%")
texto=replace(texto, chr(34), "%")
texto1=texto
texto1=replace(texto1, chr(32), "%%")


espero que te sirva
gracias
  #11 (permalink)  
Antiguo 06/07/2005, 11:18
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Puedes mandar a pantalla la cadena antes de executar la consulta para ver que valores estan tomando las variables.
  #12 (permalink)  
Antiguo 06/07/2005, 11:51
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
por ejemplo, kiero mandar buscar con la palabra 'fox',
espero que sirva, gracias
  #13 (permalink)  
Antiguo 06/07/2005, 12:03
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Me refiero a que contiene strSql2 cuando ejecutas la consulta. En asp creo que es con Response.Write para que te ponga en la pagina que contiene strSql2
  #14 (permalink)  
Antiguo 06/07/2005, 12:16
Avatar de chidomen  
Fecha de Ingreso: enero-2005
Ubicación: aquí
Mensajes: 380
Antigüedad: 19 años, 3 meses
Puntos: 0
cmd.CommandText = strSql2
Set rs2 = Server.CreateObject("ADODB.Recordset")

rs2.CursorLocation = adUseClient
rs2.PageSize = iPageSize2

rs2.Open cmd

Select Case rs2.EOF
Case False
strPageCount2 = rs2.PageCount
strCounts = rs2.RecordCount

If 1 > strPageCurrent2 Then strPageCurrent2 = 1
If strPageCurrent2 > strPageCount2 Then strPageCurrent2 = strPageCount2

rs2.AbsolutePage = strPageCurrent2

<% Response.Write strPageCount2 %>
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 21:53.