Curso Sql

Páginas: 7 (1529 palabras) Publicado: 11 de octubre de 2011
Curso de SQL
6.- SUBCONSULTAS Las subconsultas se utilizan cuando necesitamos más de una consulta para resolver un problema de recuperación de datos. Cierto es que podríamos hacer un programa que usara primero una consulta y después otra que utilizara los resultados de la primera, pero aquí tratamos de resolver los retos usando una consulta, por muy compleja que sea, para demostrar la potenciadel lenguaje SQL. La programación utilizando SQL es otro cantar y merece un curso entero. Siguiendo los ejemplos del curso, supongamos que queremos saber los empleados que ganan más que otro empleado llamado “Jorge” y cuyo código es el uno. Para resolver esto, necesitamos dos consultas: una para saber lo que gana “Jorge” y otra para obtener los empleados que ganen más que lo que gana “Jorge”. Vamosa resolverlo escribiendo una consulta dentro de otra, es decir: usando una subconsulta. Para averiguar el salario de “Jorge” haríamos: SELECT salario FROM EMPLEADOS WHERE codigo = 1 ; Pues para obtener los empleados que ganan más que “Jorge” hacemos: SELECT nombre, salario FROM EMPLEADOS WHERE salario > ( SELECT salario FROM EMPLEADOS WHERE codigo = 1 ) ; La consulta más interna o subconsultadevuelve el salario de “Jorge” que será utilizado por la consulta principal (la externa) para obtener el resultado deseado. Usar una subconsulta es equivalente a realizar dos consultas secuencialmente y utilizar el resultado de la primera como valor para la segunda consulta (la principal). En incluida sentencia UPDATE y clausulas
• • •

definitiva: una subconsulta es una sentencia SELECT que estáen una clausula de otra sentencia SELECT (realmente de otra SQL como ya veremos cuando estudiemos las sentencias INSERT, DELETE). Se puede poner la subconsulta en algunas de las de un comando SQL:

Clausula WHERE Clausula HAVING Clausula FROM de una sentencia SELECT o DELETE

Esta sería una pequeña guía para escribir subconsultas:


• • •

Para las subconsultas se utilizan los operadores(en el ejemplo anterior el “>”) de comparación que se dividen en dos clases: Operadores de fila simple (>,=,>=,=, ( SELECT MIN(salario) FROM EMPLEADOS WHERE departamento=(SELECT departamento FROM EMPLEADOS WHERE codigo=1) ) ; Esta SELECT visualizaría todos los departamentos que tienen un salario mínimo mayor que el salario mínimo de los empleados del departamento de “Jorge”. Rizando el rizo hemosanidado una subconsulta dentro de otra subconsulta, además de usar la clausula HAVING. Y por último voy a especificar dos errores típicos cuando usamos subconsultas mono-registro o “single-row”:




Que una subconsulta devuelva más de un registro cuando se espera uno solo. Esto provoca un error ya que estaremos utilizando operadores de fila única. (En oracle obtendríamos un bonitoORA-01427: single-row subquery returns more than one row) Que una subconsulta no devuelva ningún registro. Debemos asegurarnos que la subconsulta devolverá un registro para que obtengamos el resultado deseado. En estos casos, la consulta principal tampoco devolverá ningún registro pero no dará ningún error. 6.1.2.- SUBCONSULTAS MULTI-REGISTRO (multiple-row)

Devuelve más de un registro de la sentenciaSELECT anidada. Se utilizan los operadores de comparación de fila múltiple (IN, NOT IN, ANY, ALL). Estos operadores esperan uno o más registros. Operadores multi-registro: Operador IN ANY ALL Significado Igual a los valores de cierta lista. Compara los valores con cada valor devuelto por la subconsulta Compara los valores con cada uno de los valores devueltos por la subconsulta.

Ejemplo (IN):Obtener los empleados que ganan un salario igual a cualquiera de los salarios mínimos por departamento. SELECT nombre, salario, departamento FROM EMPLEADOS WHERE salario IN ( SELECT MIN(salario) FROM EMPLEADOS GROUP BY departamento) ;

Pág 3 de 6

Curso de SQL
La consulta interna nos devolverá varios registros, uno por departamento existente en la tabla EMPLEADOS (recordemos que no tienen...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Curso SQL STGT
  • Curso sql 2008
  • Curso de sql 2005 creacion de bases
  • ejercicio unidad 6 curso de SQL
  • Curso de Sql
  • Curso sql
  • Curso de SQL
  • sql curso

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS