Unidad V : Consultas Complejas (IN, NOT IN, =ANY)
SENTENCIAS
IN, NOT IN, =ANY, >ANY, <ANY, <=ANY, <=ANY y <>ANY
En SQL la
palabra IN se usa en el WHERE, permite localizar uno o varios valores a los que
conduzca la siguiente consulta. Su sintaxis es la siguiente
SELECT
Nombre de Atributo
FROM Nombre
de tabla
WHERE Nombre
de Atributo IN (SELECT Nombre de Atributo
FROM Nombre de Tabla
WHERE condición);
Los
siguientes select pueden ser varios, pero todos anidados debidamente y
contenidos entre paréntesis. Por ejemplo, quisiéramos seleccionar información
relacionada con negocios de Los Angeles y San Diego, en la tabla TIENDAS
TIENDAS
NOMBRE |
VENTAS |
FECHA |
Los
Angeles |
1500 |
Enero 2009 |
San Diego |
250 |
Febrero
2010 |
San
Francisco |
300 |
Enero 2010 |
Boston |
700 |
Marzo 2011 |
California |
850 |
Abril 2011 |
VENDEDORES
NOMBRE |
NOMVENDEDOR |
RENDIMIENTO |
Los
Angeles |
Jesús
Escalona |
200 |
Los
Angeles |
Raúl
Galíndez |
800 |
Los
Angeles |
María Peña |
500 |
San Diego |
Carlos
Mujica |
250 |
Boston |
Benito
Maduro |
400 |
Boston |
Cecilia
Barrios |
300 |
San
Francisco |
Rosa
Carrero |
300 |
Ingresamos
SELECT *
FROM
VENDEDORES
WHERE NOMBRE
IN (SELECT NOMBRE
FROM TIENDAS
WHERE NOMBRE = ‘Los Angeles’ or NOMBRE=’San
Diego’);
La
palabra clave ANY, debe seguir a un operador de comparación
(=,<,>,<=,>=,<>), significa que retorna un valor TRUE si la
comparación es verdadera para ANY (cualquiera) de los valores en el atributo
que retorna la siguiente consulta. Por ejemplo:
SELECT NOMVENDEDOR
FROM VENDEDORES
WHERE NOMBRE =ANY(SELECT NOMBRE
FROM TIENDAS
WHERE MONTO >500);
La
palabra IN es un alias para =ANY, por lo tanto, estos dos comandos son lo
mismo:
SELECT NOMVENDEDOR
FROM VENDEDORES
WHERE NOMBRE IN(SELECT NOMBRE
FROM TIENDAS
WHERE MONTO>500);
El ANY es útil cuando el comparador es diferente a =; más adelante se verá
cuando es necesario usarlo.
La
expresión NOT IN, permite expresa la operación de la teoría de conjuntos sobre
el MENOS, o la no existencia de alguna información, en el anidamiento de
tablas, por ejemplo si quisiéramos saber que tienda no posee vendedores,
expresaríamos:
SELECT NOMBRE
FROM TIENDAS
WHERE NOMBRE NOT IN(SELECT
NOMBRE
FROM VENDEDORES);
Comentarios
Publicar un comentario