elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  AND y OR ejemplos para entender el funcionamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AND y OR ejemplos para entender el funcionamiento  (Leído 2,694 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
AND y OR ejemplos para entender el funcionamiento
« en: 26 Noviembre 2015, 15:43 pm »

Estoy tratando de filtrar resultados usando 3 columnas como filtros pero no funciona como me esperaba...

Por ejemplo, en la tabla tengo un solo ejemplo: col1 es 2, col2 es 0 y col3 es 3.

Si hago:

Código
  1. AND col1 = 1 OR col1 = 3
  2. AND col3 = 3

No se muestra el ejemplo. Pero si hago:

Código
  1. AND col1 = 1 OR col1 = 3
  2. AND col3 = 1 OR col3 = 3

Si que se muestra... ¿por qué ahora si pero antes no? No le veo ningún sentido... No hay ninguna col3 con valor 1 pero si con 3, ¿por qué no se muestra cuando solo busco el valor 3? Pero si busco el valor 1 y 3 ¿si que se muestra? Por favor explicarmelo o me volveré más loco aun  :-\

Si cualquiera de los AND no se cumple (no se muestra nada) o como funciona exactamente?

¿Funcionará igual si uso IN() en lugar de OR? Mejor cuando lo entienda uso el IN().

Gracias!


En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.764


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: AND y OR ejemplos para entender el funcionamiento
« Respuesta #1 en: 26 Noviembre 2015, 18:19 pm »

Creo que lo primero que tienes que empezar haciendo es aprender un poco de lógica matemática. Acá se manejan valores de Verdadero y Falso, y los operadores lógicos como AND y OR toman 2 valores y realizan una operación sobre ellos. Tal como 2 + 2 = 4, puedes tener operaciones T and T = T. Lo bueno es que los valores binarios solo son 2 y puedes tener una tabla de los resultados porque son solo unos cuantos.

AND se cumple solo cuando ambos valores son verdaderos:

T and T = T
T and F = F
F and T = F
F and F = F

OR se cumple cuando al menos uno de los valores es verdadero:

T or T = T
T or F = T
F or T = T
F or F = F

en tus ejemplos tienes un AND al principio pero no sabemos qué es lo que hay antes de ese AND, ni si es verdadero o falso.

Otra cosa que tienes que tener en cuenta al usar varios operadores lógicos es que para mejor lectura debes agruparlos con paréntesis. Claro que si no usas paréntesis los operadores tienen un orden de resolución, pero es mejor que sea legible.

Links:

http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/operadores1.htm
http://www.bennadel.com/blog/126-sql-and-or-order-of-operations.htm


En línea





Dominio en venta: https://forojapones.com/
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: AND y OR ejemplos para entender el funcionamiento
« Respuesta #2 en: 26 Noviembre 2015, 21:40 pm »

No sé que tipo de lógica matemática lleva el OR (sin paréntesis), pero con IN() funciona exactamente como quiero:

Por ejemplo (tomando en cuenta el ejemplo: type es 2, status es 0 y bhk es 3)

Código
  1. AND t2.TYPE = 1 OR t2.TYPE = 2
  2. AND t2.STATUS = 0 --OR t2.status = 1
  3. AND t2.bhk = 1

No devuelve nada, pero si le añado el OR si que devuelve, ¿qué tipo de lógica es esa?

Si hacemos lo mismo pero con IN() funciona perfectamente:

Código
  1. AND t2.TYPE IN (1, 2)
  2. AND t2.STATUS IN (0) -- (0, 1)
  3. AND t2.bhk IN (1)

No devuelve nada, ni con 0 solo, ni con 0 y 1... Esto si lo veo lógico.

Para que devuelva con el IN:

Código
  1. AND t2.TYPE IN (1,2)  -- 2
  2. AND t2.STATUS IN (0)  -- 0
  3. AND t2.bhk IN (1,3)  -- 3

Ahora devuelve el ejemplo porque todos los AND son TRUE. Esto es lo que necesitaba.

Exacto, acaba de leer que necesito parentesis para que el OR haga lo que necesito, pero es más facil usar IN.

Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
instalacion de un OS para entender el bug IIS
Hacking
shug0 0 2,599 Último mensaje 16 Diciembre 2009, 01:04 am
por shug0
Cuatro claves para entender el Facebook actual: móvil y menos atractivo para ...
Noticias
wolfbcn 0 1,479 Último mensaje 31 Octubre 2013, 14:55 pm
por wolfbcn
Para entender el algoritmo de inserción
Programación C/C++
Yoel Alejandro 0 1,520 Último mensaje 4 Marzo 2014, 19:02 pm
por Yoel Alejandro
5 claves para entender el 5G
Noticias
wolfbcn 0 1,398 Último mensaje 24 Marzo 2015, 01:46 am
por wolfbcn
Entender el funcionamiento de las tarjetas con chip inhalambricas
Hacking Wireless
Pupper 1 4,026 Último mensaje 1 Abril 2023, 08:58 am
por LlopoRobot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines