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

[SOLUCIONADO] sentencia para select con comparador logico

Estas en el tema de sentencia para select con comparador logico en el foro de Bases de Datos General en Foros del Web. tengo el siguiente select @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT * FROM `ZZZZZZZZZZ` WHERE `CODIGO` = '$q'   OR `estado` = 'PRESENTADO' OR `estado` ...
  #1 (permalink)  
Antiguo 16/09/2016, 13:11
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 11 meses
Puntos: 1
sentencia para select con comparador logico

tengo el siguiente select
Código MySQL:
Ver original
  1. SELECT * FROM `ZZZZZZZZZZ` WHERE `CODIGO` = '$q'  OR `estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO'

lo que busco es que si busco un producto por medio del codigo que me busque no importando si esta el producto presentado o observado

Última edición por gnzsoloyo; 20/09/2016 a las 14:41
  #2 (permalink)  
Antiguo 16/09/2016, 13:40
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: sentencia para select con comparador logico

Cita:
Iniciado por sarrhen Ver Mensaje
tengo el siguiente select
Código MySQL:
Ver original
  1. "SELECT * FROM `ZZZZZZZZZZ` WHERE `CODIGO` = '$q'  OR `estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO' "

lo que busco es que si busco un producto por medio del codigo que me busque no importando si esta el producto presentado o observado
Mira, tenes un error en la query porque haces un OR cuando, tendría que ser un AND ya que comparas dos campos

Código MySQL:
Ver original
  1. "SELECT * FROM `ZZZZZZZZZZ` WHERE `CODIGO` = '$q'  AND `estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO' "

Pero lo que no entiendo es, si queres que te venga lo que sea, ya sea presentado U ordenado, porque comparas el campo estado ??

Simplemente trae todo lo que sea igual al codigo ingresado y ya
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #3 (permalink)  
Antiguo 17/09/2016, 11:04
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: sentencia para select con comparador logico

Si al inicio tenia el query de esa forma pero no me realiza la consulta utilize el comparador logico de XOR lo que yo deseo es que al buscar el producto no importa que este tenga el estado de PRESENTADO O OBSERVADO pero que me busque ese producto en especifico que lo establezco en q

SELECT * FROM `Producto` WHERE `codigoProducto` = '201610008899' AND `estadoProducto` = 'PRESENTADO' OR `estadoProducto` = 'OBSERVADO'


Pero me muestra todo los valores que estan estado presentado o observado cuando solo busco

Última edición por sarrhen; 17/09/2016 a las 11:25
  #4 (permalink)  
Antiguo 17/09/2016, 13:15
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: sentencia para select con comparador logico

Tu forma de explicar es complicada

Decís que no importa el estado (en serio no pongas una O antes de de una palabra que inicia con O) ya sea PRESENTADO U OBSERVADO, pues eso lo debería traer sin necesidad de otra comparación, solo con el <codigo_producto='123'>

Código MySQL:
Ver original
  1. SELECT * FROM `Producto` WHERE `codigoProducto` = '201610008899'


Ahora que la variable $q no traiga nada y por ende no te devuelva resultado es algo completamente diferente, sera ese tu problema ?? esa variable se establece despues de un POST o envio de algun form ?? ya hiciste echo a esa variable para ver que en verdad tenga datos y que no se meta vacía al momento de hacer el query
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #5 (permalink)  
Antiguo 17/09/2016, 21:59
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: sentencia para select con comparador logico

si soy un tonto no me he dado explicar pero eso es lo que busco que este en presentado u observado a la vez me ayuda como un validador interno ya que me buscaria con otros estados que tengo en mi base como Creado, Modificado, Alterado al realizar el query como tu estableces mil disculpas por no darme a entender
  #6 (permalink)  
Antiguo 18/09/2016, 01:16
 
Fecha de Ingreso: mayo-2013
Ubicación: San Vicente
Mensajes: 127
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: sentencia para select con comparador logico

SOLUCIONADO ME FUNCIONA COMO LO DESEO GRACIAS POR SU AYUDA
Código MySQL:
Ver original
  1. SELECT * FROM `Producto` WHERE `estadoProducto` = 'OBSERVADO' OR `estadoProducto`= 'PRESENTADO' HAVING `codigoProducto` = '201610008899'
  #7 (permalink)  
Antiguo 19/09/2016, 10:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: sentencia para select con comparador logico

La solucion a tu query sin usar el having(que no necesitas porque el having es el where para las funciones de agregado)



Código MySQL:
Ver original
  1. SELECT * FROM `ZZZZZZZZZZ` WHERE (`CODIGO` = '$q')  and (`estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO')
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 20/09/2016, 13:31
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: sentencia para select con comparador logico

Libras que tiene de diferente su select con paréntesis que el mio sin paréntesis ??

Yo sigo con la teoria que un select buscando el codigo y los dos diferentes estados es suficiente
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #9 (permalink)  
Antiguo 20/09/2016, 15:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: sentencia para select con comparador logico

Precedencia de operadores es lo que tiene de diferente ;), sql server analiza las sentencias de izquierda a derecha por lo que esto:


Código SQL:
Ver original
  1. SELECT * FROM `ZZZZZZZZZZ` WHERE `CODIGO` = '$q'  AND `estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO'

nos va da dar como resultado todos los valores donde el codigo sea por ejemplo 1 y el estado sea presentado....hasta ahi todo bien, pero viene una sentencia OR, por lo que buscara todos los valores que tenga estado observado

si tenemos estos datos

codigo estado
1 presentado
1 presentado
2 observado
3 observado


Nos va a regresar todos los registros, porque porque se cumple que codigo sea 1 O estado sea observado :).

usando el mismo ejemplo pero usando el query que propongo:

Código SQL:
Ver original
  1. SELECT * FROM `ZZZZZZZZZZ` WHERE (`CODIGO` = '$q')  AND (`estado` = 'PRESENTADO' OR `estado` = 'OBSERVADO')

Aqui sql analizaria que tenga el codigo=1 y que el estado sea presentado u observado

con los datos de ejemplo nada mas nos regresara donde codigo=1 y estado presentado u observado en este caso nada mas los primeros 2 registros

1 presentado
1 presentado


Recuerda que una operacion logica cuando usas un and ambos resultados se deben de cumplir, en cambio cuando usas OR cualquiera de los 2 cumplan la condicion es mas que suficiente

Tabla de Verdad and:
1 and 1 =1
1 and 0 =0
0 and 1 = 0
0 and 0 =0

Tabla de verdad OR:
1 or 1 =1
1 or 0 =1
0 or 1 = 1
0 or 0 = 0


Se entiende?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 20/09/2016 a las 15:26
  #10 (permalink)  
Antiguo 21/09/2016, 16:49
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: sentencia para select con comparador logico

Mas que claro, gracias.
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: logico, select, sentencia
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 10:07.