Subconsultas
Una subconsulta se puede utilizar en predicados cuantificados, en el predicado EXISTS o en el predicado IN. Una subconsulta solamente se puede especificar en un elemento individual en una cláusula SELECT.
Cuando una expresión path aparece en una subconsulta, la variable de identificación de la expresión path debe definirse en la subconsulta, en una de las subconsultas que contiene o en la consulta externa. Una subconsulta a escala es una subconsulta que devuelve un valor. Se puede utilizar una subconsulta a escala en un predicado básico y en la cláusula SELECT de una consulta dinámica.
Ejemplo: subconsultas
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e1.salary) FROM EmpBean e1)
La consulta anterior devuelve los empleados que ganan más del sueldo promedio de todos los empleados.
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e1.salary) FROM IN (e.dept.emps) e1 )
La consulta anterior devuelve los empleados que ganan más del sueldo promedio de su departamento.
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary = ( SELECT MAX(e1.salary) FROM IN (e.dept.emps) e1 )
La consulta anterior devuelve los empleados que más ganan en su departamento.
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e.salary) FROM EmpBean e1 WHERE YEAR(e1.hireDate) = YEAR(e.hireDate) )
La consulta anterior devuelve los empleados que ganan más que el promedio de empleados contratados el mismo año.