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

Buscador PHP + MySQL

Estas en el tema de Buscador PHP + MySQL en el foro de Mysql en Foros del Web. Hola, tengo estas tablas, con esos campos: tportadas (idimagen, isbn ,imagen) trevistas (idrevista, isbn ,titulo,descripcion,comentario,pais,editorial) Lo que deseo es hacer una busqueda, con este script: ...
  #1 (permalink)  
Antiguo 19/04/2006, 03:42
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Buscador PHP + MySQL

Hola, tengo estas tablas, con esos campos:
tportadas(idimagen,isbn,imagen)
trevistas(idrevista,isbn,titulo,descripcion,comentario,pais,editorial)
Lo que deseo es hacer una busqueda, con este script:
Código PHP:
        $query "select * from trevistas r, tportadas p";
        
$query .= " where r.isbn = p.isbn";
        
$query .= " and pais like '%" .$search"%'";
        
$query .= " or titulo like '%" .$search"%'";
        
$query .= " or descripcion like '%" .$search"%'";
        
$query .= " or r.isbn like '%" .$search"%'";
        
$query .= " or editorial like '%" .$search"%'";
        
$query .= " or comentarios like '%" .$search"%'";
        
$query .= " order by r.isbn"
el problema es q al hacer la busqueda, me devuelve los resultados multiplicados por el numero de registros que tengo en "tportadas".
Donde esta el error???
He leido al respecto de hacer estos buscadores, y sugieren el uso de indices Fulltext, pero no los recomiendan para cuando la busqueda es de 1 palabra.
Ya veré eso mas adelante, de momento quiero saber en que estoy fallando...
Gracias!!!
__________________
:adios:
  #2 (permalink)  
Antiguo 19/04/2006, 08:14
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Me parece que lo que te devuelve tu consulta esta correcto ya que por cada registro de trevistas unira con todas las coincidencias que encuentre en tportadas, segun el join que haces, lo que puedes hacer es agrupar por isbn, pero el problema reside en cual de todas las tportadas quieres ver, por que con la agrupacion (si no me equivoco ) te devolvera el primero y no se si ese es el que quieras ver, tal vez seria mejor poner una condicion excluyente (AND) de que registro de tportada deseas, ahh y como sugerencia tendras mejores tiempos de respuestas con el uso de INNER JOIN, LEFT JOIN, etc.
Código PHP:
//
$query "SELECT * FROM trevistas r INNER JOIN tportadas p ON (r.isbn = p.isbn)" ;
        
$query .= " WHERE pais like '%" .$search"%'";
        
$query .= " OR titulo like '%" .$search"%'";
        
$query .= " OR descripcion like '%" .$search"%'";
        
$query .= " OR r.isbn like '%" .$search"%'";
        
$query .= " OR editorial like '%" .$search"%'";
        
$query .= " OR comentarios like '%" .$search"%'";
        
$query .= " ORDER BY r.isbn";  
        
$query .= " GROUP BY r.isbn"
suerte, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 19/04/2006, 14:10
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Hola Deadlykyo, muchas gracias por tu ayuda, ahora todo marcha bien con
Código:
SELECT * FROM trevistas r INNER JOIN tportadas p ON (r.isbn = p.isbn)"
aunque si le pongo al final:
Código:
GROUP BY r.isbn
me manda el siguiente error:
Código:
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 'group by r.isbn' 
at line 1
__________________
:adios:
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 18:59.