OPERADORES LÓGICOS: AND y OR



Generalidades
Los operadores lógicos o conectores se utilizan cuando se arma una cláusula WHERE, allí estamos creando una condición que hará las veces de filtro para devolvernos dentro de la consulta los registros deseados, es decir solamente aquellos que cumplan la mencionada condición que coloquemos en la cláusula WHERE.

Para hace 1 sola condición dentro del WHERE solo basta con escribir el campo y el valor que quiero que tome y allí quedaría lista mi condición.

Una sintaxis de ejemplo sería la siguiente:

SELECT * FROM [nombre_de_tabla] WHERE [campo a filtrar 1] = 'VALOR_DESEADO_1'

¿Pero que sucede si quiero que se cumpla la condición que explicamos en el ejemplo anterior y a la vez también una segunda condición, es decir 2 condiciones simultáneamente?

La respuesta es conectando ambas condiciones con la palabra reservada AND que en inglés significa "Y", con lo cual de esta forma lograremos que se obteng como resultado los registros que si y solo sí cumplan las dos condiciones.

  • Si un registro cumple solo la primera condición y no cumple la segunda NO SERÁ PARTE DEL RESULTADO
  • Si un registro NO cumple la primera condición pero SI cumple la segunda NO SERÁ PARTE DEL RESULTADO
  • Si un registro SI cumple la primera condición y TAMBIÉN cumple la segunda SERÁ PARTE DEL RESULTADO

De la misma forma puedo colocar 2 o más condiciones todas conectadas con AND y me obligarán a que cada registro del resultado cumpla con todas y cada una de ellas a la vez, quedando escrito de la siguiente forma:

SELECT * FROM [nombre_de_tabla] WHERE [campo1] = valor1 AND [campo2] = valor2 ... AND [campo_n] = valor_n


Ahora bien si llegase el caso que quiero llegar a un resultado con múltiples condiciones, es decir 2 o más, pero que se cumpla al menos una de ellas, se utiliza la palabra reservada OR que en inglés significa "O" y su utilización con un ejemplo sería:

SELECT * FROM [nombre_de_tabla] WHERE [campo a filtrar 1] = 'VALOR_DESEADO_1' OR [campo a filtrar 2] = 'VALOR_DESEADO_2' OR [campo a filtrar 3] = 'VALOR_DESEADO_3'

A diferencia del AND, para el caso del OR nos podemos encontrar con la situación que quisiéramos filtrar sobre un mismo campo dos o más veces, cosa que con el AND no se podría, es decir un mismo campo no podría tomar un valor "Y" otro valor a la vez, pero con el OR esto si es posible, veamos un ejemplo práctico donde quiero de un listado de personas, las que sean de 25 años de edad o menos, y aquellas que tengan 40 años de edad o más, a lo cual una forma de escribirlo sería así:

SELECT * FROM [personas] WHERE [edad] <= 25 OR [edad] >=40

Por último también podemos combinar AND y OR donde obtendremos las propiedades de cada uno, utilizando los paréntesis para conseguir el filtro deseado y donde tendremos que tener cuidado porque podemos incurrir en agrupar condiciones que nos den un resultado que no es el esperado, por ejemplo siguien con el ejemplo anterior ahora deseo las personas que tienen entre 25 y 40 años, y además pretendo que esas personas que midan menos de 1.70 m. ó bien midan más de 1.80 m., y una forma de escribirlo sería así:

SELECT * FROM [personas]
WHERE
([edad] > 25 AND [edad] < 40) AND ([altura] < 1.70 OR [altura] > 1.80)

Donde vemos que los paréntesis nos indican que deben cumplirse ambos grupos de condiciones a la vez, la primer de las edades, y a su vez la segunda de las alturas, pero es aquí donde se podría haber caído en un error, que sería no agrupar las condiciones con los paréntesis, dejando la que tenga un OR libre de paréntesis y ocurriría lo siguiente:

SELECT * FROM [personas]
WHERE ([edad] > 25 AND [edad] < 40) AND [altura] < 1.70 OR [altura] > 1.80

Con lo cual obtendríamos como resultado aquellas personas que por un lado cumplan la condición de la edad y a su vez tengan menos de 1.70 de altura, ya que el AND agrupa dichas condiciones, pero ahora sin los segundos paréntesis se sumarán todas las personas que midan más de 1.80 m. sin importar la edad, con lo cual la consulta arrojará un resultado diferente y con más registros que bien escrita del modo anterior.

 
 



Búsquedas más frecuentes
Diseño y DesarrolloDiseño y desarrollo de sitios web