Algunas veces, en una consulta, necesitamos comparar el valor de un campo contra un conjunto de valores.
Por ejemplo, si necesitamos saber si el valor de un campo es mayor a todos los valores de un conjunto de valores, utilizamos la cláusula ALL.
Por otra parte, si necesitamos saber si un valor es mayor a alguno (mínimo uno) de los valores de un conjunto de valores, utilizamos la cláusula ANY.
A continuación vamos a ver dichas cláusulas a través de un ejemplo.
Supongamos que tenemos una tabla con datos de empleados de una empresa. Los datos de dicha tabla se muestran en la imagen de la izquierda. |
|
Y en otra tabla, tenemos los datos de los supervisores de dicha empresa. Los datos son los que se muestran en la imagen. |
|
Vamos a suponer que necesitamos consultar los datos de los empleados cuyo sueldo sea mayor al sueldo de TODOS los supervisores. El único empleado, como se puede observar, que cumple con esa condición es Orlando Pérez.
La consulta se muestra en la imagen. La instrucción ejecuta la subconsulta, generando un conjunto con todos los sueldos de los supervisores. Y luego compara cada sueldo de empleado con ese conjunto, para mirar si hay alguno que sea mayor a todos los del conjunto. Internamente, la instrucción mostrada es los mismo que la siguiente: SELECT * FROM EMPLEADO E WHERE E.SUELDO > ALL (2000000,5500000,5700000) |
|
Por otra parte, si necesitamos los datos de los empleados cuyo sueldo sea mayor a alguno (mínimo uno) de los sueldos de los supervisores, podemos observar que el único empleado que no cumple con esta condición es Juan Carlos Mora. Su sueldo es menor a todos los sueldos de los supervisores. La cláusula ANY permite mirar, en este caso, si los sueldos de cada empleado es mayor a alguno de los sueldos de los supervisores. Y se puede observar en el resultado que salen todos los empleados, menos Juan Carlos Mora. |
Video: