Jump to content


Photo

Consulta like varios campos


  • Please log in to reply
3 replies to this topic

#1 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 posts
  • LocationCiudad de México

Posted 25 May 2014 - 05:48 PM

Otra vez yo!  *-) que lata doy!

Estoy haciendo un buscador por palabra clave en varios campos.
¿hay una forma mejor de hacer la consulta que poniendo OR nombredelcampo LIKE para cada uno de los campos en los que quiero buscar ?
El principal problema es que ignora la primera condición (autoriza='1') y me arroja también los que tienen otro valor en el campo "autoriza"

¿que estoy haciendo mal?

De antemano mil gracias!

aqui está mi metodo (archivo clases)



delphi
  1. public function busca_prop_k($inicio, $rxpag )
  2. {
  3.  
  4. $sql="SELECT  * FROM propiedades
  5. where
  6. autoriza = '1'
  7. and
  8. titulo like '%".$_GET["key"]."%'
  9. or
  10. descripcion like '%".$_GET["key"]."%'
  11. or
  12. tipo like '%".$_GET["key"]."%'
  13. or
  14. tipo2 like '%".$_GET["key"]."%'
  15. or
  16. colonia like '%".$_GET["key"]."%'
  17. or
  18. otras like '%".$_GET["key"]."%'
  19. or
  20. comentarios like '%".$_GET["key"]."%'
  21. or
  22. keywords like '%".$_GET["key"]."%'
  23. order by id_propiedad desc limit $inicio, $rxpag";
  24. $res=mysql_query($sql,Conectar::con());
  25. while ($reg=mysql_fetch_assoc($res))
  26. echo $sql;
  27. {
  28. $this->propk[]=$reg;
  29. }
  30. return $this->propk;
  31.  
  32. }



  • 0

#2 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 832 posts
  • LocationMisiones, Argentina

Posted 25 May 2014 - 08:04 PM

Como siempre respondiendo antes de entender bien el asunto. Pero, en fin.
¿no será por lo siguiente?:
el primer operador que es AND opera con el segundo solamente, esto dará una respuesta. Luego, a esta respuesta se le aplica toda esa seguidilla de ORs.
Quizá te convenga usar un paréntesis para encerrar todas las operaciones con OR (que en definitiva son una suma) dejando aislado al único AND (que es un producto), pues al menos dentro de un lenguaje de programación AND tiene un orden más alto de prioridad que OR (Tal como el producto y la suma, primero se efectúa el producto).
Espero que sea eso y puedas seguir adelante.
2*(2+2) <> 2*2+2

Saludos

  • 0

#3 Pili

Pili

    Member

  • Miembros
  • PipPip
  • 44 posts
  • LocationCiudad de México

Posted 26 May 2014 - 03:57 PM

Mil gracias cram... solucionaste mi problema  ;)
Saludos
  • 0

#4 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 27 May 2014 - 04:35 AM

También podrías "sumar" todos los campos y hacer un solo LIKE, no sé si será más o menos rápido:



delphi
  1. SELECt * FROM propiedades
  2. WHERE (Autoriza = '1') AND
  3. (titulo||descripcion||tipo||tipo2||colonia||comentarios||keywords  LIKE '%".$_GET["key"]."%')
  4. ORDER BY id_propiedad DESC LIMIT $inicio, $rxpag


  • 0




IP.Board spam blocked by CleanTalk.