Revista Informática

In

Publicado el 06 junio 2014 por Jamesrevelo @herprogramacion
El operador IN de SQL especifica si un valor pertenece () a un conjunto de valores. Dicho conjunto de valores pueden ser literales declarados manualmente o valores obtenidos en una subconsulta.
SQL IN

Sintaxis

SELECT...FROM...WHERE valor IN([valor1, valor2,...]|[Subconsulta])
Cuando debo usar el operador IN?
Cuando necesites comparar un columna con una gran cantidad de valores en la sentencia WHERE. El objetivo de este operador es ahorrarte múltiples condiciones de igualdad concatenadas.
Supongamos que posees una tabla llamada empleado y que deseas consultar los empleados que tengan los siguientes nombres: 'James', 'Ricardo','Brayan' y 'Laura'. Normalmente muchas personas que desconozcan la función de IN harán los siguiente:
SELECT *FROM EMPLEADOWHERE NOMBRE='James' OR   NOMBRE='Ricardo' OR   NOMBRE='Brayan' OR      NOMBRE='Laura'
Aunque es una forma válida de hacerlo, es dispendioso para el programador.


Como lo haríamos nosotros que si conocemos el operador IN?
SELECT *
FROM EMPLEADOWHERE NOMBRE IN('James','Ricardo','Brayan','Laura')
Basta solo con crear un conjunto de valores como referencia para comprobar si el nombre se mostrará en los resultados finales.
Dijiste que subconsultas!, donde están las subconsultas?Si claro, el operador IN permite crear nuestro conjunto de valores a partir de los resultados de una subconsulta. Veamos el siguiente ejemplo:
Suponga que tiene una sencilla relación 1 a muchos entre dos tablas llamadas CLIENTE y FACTURA. Busque el nombre, apellido y edad de aquellos clientes que hayan comprado entre '2013-05-01' hasta '2013-07-01'.

Es obvio que habrán varios clientes que hayan comprado entre esas fechas, en consecuencia habrán varios códigos que debemos comparar con el operador IN. Miremos las tablas:

IN

Tabla CLIENTE


IN

Tabla FACTURA


A continuación realizaremos una consulta para resolver el enunciado mediante el operador IN y una subconsulta:
SELECT NOMBRE, APELLIDO, EDADFROM  CLIENTEWHERE ID IN(SELECT IDCLIENTE     FROM  FACTURA              WHERE  FECHABETWEEN'2013-05-01'AND'2013-07-01')
IN resultados
Si compruebas en la tabla factura, estos 6 clientes fueron los que compraron en el rango de  tiempo establecido.
Dicen que el operador NOT puede combinarse con IN, es verdad?
Claro!
Al hacerlo estaremos diciendo : " quiero consultar aquellos valores que NO ESTÁN dentro del siguiente conjunto...".
En el anterior ejemplo vimos que 6 de nuestros 10 clientes aparecieron en los resultados, ya que compraron en el rango de fechas. Ahora veremos quienes no compraron en ese rango mediante el operador NOT:
SELECT NOMBRE, APELLIDO, EDADFROM  CLIENTEWHERE ID NOT IN( SELECT  IDCLIENTE    FROM  FACTURA                   WHEREFECHABETWEEN'2013-05-01'AND'2013-07-01')
IN
Listo!, los 4 clientes que no aparecieron en la anterior consulta han aparecido aquí, al no haber comprado en las fechas establecidas.James Revelo Urrea - Desarrollador independiente

Volver a la Portada de Logo Paperblog