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

Duda en mi consulta (usar AND ; OR )

Estas en el tema de Duda en mi consulta (usar AND ; OR ) en el foro de Mysql en Foros del Web. Hola a todos tengo una duda estoy haciendo una busqueda de 3 campos, nombre empresa, rubro, dirección, dentro de una mista tabla. Realice la prueba ...
  #1 (permalink)  
Antiguo 18/02/2006, 10:08
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Duda en mi consulta (usar AND ; OR )

Hola a todos tengo una duda estoy haciendo una busqueda de 3 campos, nombre empresa, rubro, dirección, dentro de una mista tabla.

Realice la prueba uno por uno y si me sale el resultado pero cuando probe los 3 a la vez ocurria que me daba error que no habia encontrado datos necesarios. o en otros casos me botaba todos los registros de mi tabla.

Aca les dejo mi consulta
Código PHP:
// Estas 3 consultas si sale uno por uno
//$sql = "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE  razonsocial LIKE '$empresa%'  ";
//$sql = "SELECT * FROM empresa WHERE  giro LIKE '$giro&' ";
//$sql = "SELECT * FROM empresa WHERE  distrito LIKE '$distrito%'  ";

//Pero cuando pongo los 3 me sale 0 resutlados

$sql "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE  razonsocial LIKE '$empresa%'  OR giro LIKE '$giro&' OR  distrito LIKE '$distrito%'  "
Espero sus posibles comentarios gracias
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #2 (permalink)  
Antiguo 18/02/2006, 10:19
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola helthon

Prueba poniendo las condiciones entre paréntesis:
Código:
WHERE  (razonsocial LIKE '$empresa%'  OR giro LIKE '$giro&' OR  distrito LIKE '$distrito%')  ";
Espero que te funcione. Saludos,
  #3 (permalink)  
Antiguo 18/02/2006, 10:46
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
creo que el problema es que tienes un caracter invalido en '$giro&', y si no funciona asi, ahora no se si logicamente estan bien tus condiciones AND o OR ya que no explicas que quieres obtener para ver si la logica que sigues esta bien, pero tal vez solo sea el ampersand que metiste en tu consulta:
Código PHP:
//

$sql "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE  razonsocial LIKE '$empresa%'  OR giro LIKE '$giro%' OR  distrito LIKE '$distrito%'  "
cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #4 (permalink)  
Antiguo 18/02/2006, 11:23
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
aun sigue habiendo erroes

Saludos

Hola JavierB, probe colocando los parentesis en la condicion como me habias comentado, tambien probe colocando a cada uno
Cita:
$sql = "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa
WHERE (razonsocial LIKE '$empresa%' OR giro LIKE '$giro&' OR distrito LIKE '$distrito%') ";


$sql = "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE (razonsocial LIKE '$empresa%') OR (giro LIKE '$giro&' ) OR (distrito LIKE '$distrito%') ";
Pero me sigue saliendo todos los registros


Cita:
ahora no se si logicamente estan bien tus condiciones AND o OR ya que no explicas que quieres obtener para ver si la logica que sigues esta bien, pero tal vez solo sea el ampersand que metiste en tu consulta:
Lo que deseo en esta consulta es obtener informacion del usuario ya sea ingresando su empresa , su giro o su distrito de donde vive, Por cualquiera de los 3 campos obtener su info.

Pero lamentablemente con mi consulta me salen todos los resultados

Gracias a los dos
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #5 (permalink)  
Antiguo 18/02/2006, 11:57
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Creo que la logica que usas esta fallando por ese motivo es que si pones or y uno de los campos esta vacio tonces tu condicion quedaria LIKE "%" y eso hace que te muestre todo, tal vez puedes intentar hacer algo asi:
Código PHP:
//
$sql "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE  ";
$condicion=""
if (isset($_POST['empresa']))
{
  
$empresa=$_POST['empresa'];
  
$condicion=($condicion=="")?" razonsocial LIKE '$empresa%' "" OR razonsocial LIKE '$empresa%' ";
}
if (isset(
$_POST['giro']))
{
  
$giro $_POST['giro']
  
$condicion=($condicion=="")?" giro LIKE '$giro%' "" OR giro LIKE '$giro%' ";
}
if (isset(
$_POST['distrito']))
{
  
$distrito $_POST['distrito']
  
$condicion=($condicion=="")?" distrito LIKE '$distrito%' "" OR distrito LIKE '$distrito%' ";
}

$sql $sql.$condicion
es una idea basica puedes adaptarla, mejorarla, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #6 (permalink)  
Antiguo 27/02/2006, 18:06
Avatar de helthon  
Fecha de Ingreso: junio-2005
Ubicación: Lima
Mensajes: 549
Antigüedad: 18 años, 10 meses
Puntos: 7
Hola

Gracias por ti respuesta pero estuve trando de una u otra manera y no logro obtener el resultado, el mensaje de error que me bota a la consutla es :

Cita:
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 '' at line 1
Segun lo que entiendo es que si encuentra un spacio en blanco ejecuta este giro LIKE '$giro% o si no este OR giro LIKE '$giro%'

bye
__________________
HELTHON FUENTES
FLORERIA FLORES PERU Floresperu.com.pe
Garantizamos que cada entrega de flores será de la más alta calidad y frescura
  #7 (permalink)  
Antiguo 01/03/2006, 07:42
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Porque no muestras la consulta completa con un echo y ahi podremos ver que pasa:
Código PHP:
//
$sql "SELECT razonsocial, ruc, direccion, distrito, telefono, fax, email, website , giro, imagen FROM empresa WHERE  ";
$condicion=""
if (isset($_POST['empresa']))
{
  
$empresa=$_POST['empresa'];
  
$condicion=($condicion=="")?" razonsocial LIKE '$empresa%' "" OR razonsocial LIKE '$empresa%' ";
}
if (isset(
$_POST['giro']))
{
  
$giro $_POST['giro']
  
$condicion=($condicion=="")?" giro LIKE '$giro%' "" OR giro LIKE '$giro%' ";
}
if (isset(
$_POST['distrito']))
{
  
$distrito $_POST['distrito']
  
$condicion=($condicion=="")?" distrito LIKE '$distrito%' "" OR distrito LIKE '$distrito%' ";
}

$sql $sql.$condicion
echo 
"<br>consulta".$sql
y muestras la consulta para ver que sucede, por que el error, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
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 19:18.