UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING INDUSTRIAL

  • Slides: 18
Download presentation
UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING. INDUSTRIAL Base de Datos Resultados Internet Requerimientos

UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING. INDUSTRIAL Base de Datos Resultados Internet Requerimientos BASE DATOS Docente: Ing. Francisco Rodríguez

Base de Datos Tema 7: El Lenguaje Estándar SQL Sub. Consultas

Base de Datos Tema 7: El Lenguaje Estándar SQL Sub. Consultas

¿Que es una Subconsulta? • Una subconsulta es una sentencia SELECT embebida en una

¿Que es una Subconsulta? • Una subconsulta es una sentencia SELECT embebida en una cláusula de otra sentencia SQL. consulta principal Sintaxis del Select anidado SELECT. . . FROM. . . subconsulta WHERE. . . ( SELECT. . . FROM. . . WHERE. . . )

Subconsultas: Sintaxis SELECT lista_Campos FROM nom_tabla WHERE expresión operador (SELECT lista_campos FROM nom_tabla)

Subconsultas: Sintaxis SELECT lista_Campos FROM nom_tabla WHERE expresión operador (SELECT lista_campos FROM nom_tabla)

Tipos de Subconsultas de fila simple Subconsultas de fila multiple

Tipos de Subconsultas de fila simple Subconsultas de fila multiple

Reglas de Subconsultas • Una subconsulta debe estar encerrada entre paréntesis. • Una subconsulta

Reglas de Subconsultas • Una subconsulta debe estar encerrada entre paréntesis. • Una subconsulta debe aparecer al lado derecho del operador. • Las subconsultas no pueden contener una clausula Order. By.

Subconsultas de fila simple ¿Como son procesadas las Subconsultas Anidadas? 1. La sentencia SELECT

Subconsultas de fila simple ¿Como son procesadas las Subconsultas Anidadas? 1. La sentencia SELECT Anidada es ejecutada primero. 2. El Resultado es pasado a la Consulta Principal. Problema • Mostrar apellidos y cargos de los empleados del departamento donde trabaja el sr Borea SELECT dept_id SELECT apellido, cargo FROM Empleado WHERE apellido='Borea' WHERE dept_id =

Solución integrada SELECT apellido, cargo FROM Empleado WHERE dept_id = (SELECT dept_id FROM Empleado

Solución integrada SELECT apellido, cargo FROM Empleado WHERE dept_id = (SELECT dept_id FROM Empleado WHERE apellido='Borea‘)

Otro problema • Mostrar el apellido, cargo y salario de todos los empleados que

Otro problema • Mostrar el apellido, cargo y salario de todos los empleados que ganen menos del promedio SELECT apellido, cargo, salario FROM Empleado WHERE salario < (SELECT AVG(salario) FROM Empleado)

Subconsultas de fila múltiple Si Usted escribe una subconsulta que retorne más de una

Subconsultas de fila múltiple Si Usted escribe una subconsulta que retorne más de una fila y utiliza un solo valor de comparación, entonces cometerá un error. SELECT apellido, nombre, cargo FROM Empleado WHERE dept_id = Obtener apellido, nombre y cargo de los empleados que están en el departamento de Finanzas o en la región 2 (Select dept_id FROM Departamento where nombredpto=“Finanzas’ or region_id=‘ 2’ Error !!!

Subconsultas de Fila Múltiple. Ejemplo La subconsulta de fila múltiple retorna varias filas. �Usted

Subconsultas de Fila Múltiple. Ejemplo La subconsulta de fila múltiple retorna varias filas. �Usted debe usar un operador de fila múltiple en la cláusula. WHERE, por ejemplo el operador IN. SELECT apellido, nombre, cargo FROM Empleado WHERE dept_id IN (Select dept_id FROM Departamento where nombredpto=“Finanzas’ or region_id=‘ 2’

Subconsultas de Fila Múltiple. Ejemplo 2 Mostrar el apellido, código de departamento y cargo

Subconsultas de Fila Múltiple. Ejemplo 2 Mostrar el apellido, código de departamento y cargo de todos los empleados asignados a la regiones 1 o 2 SELECT apellido, dept_id, cargo FROM Empleado WHERE dept_id IN ( SELECT dept_id FROM Departamento where region_id IN (1, 2))

Subconsultas de Fila Múltiple. Ejemplo 3 Mostrar el primer nombre y el apellido de

Subconsultas de Fila Múltiple. Ejemplo 3 Mostrar el primer nombre y el apellido de todos los empleados con un sueldo por encima del promedio y que trabajen con cualquier empleado cuyo apellido contenga una ‘T’ SELECT nombre, apellido FROM Empleado WHERE salario > (SELECT avg(salario) FROM Empleado AND dept_id IN (SELECT dept_id FROM Empleado where UPPER(apellido) LIKE ‘%T%’)

Cláusula HAVING con Subconsultas Usted también puede usar subconsultas en la cláusula HAVING. El

Cláusula HAVING con Subconsultas Usted también puede usar subconsultas en la cláusula HAVING. El Servidor Sql. Server primero ejecuta las subconsultas. ��El Servidor retorna los resultados en la consulta principal de la cláusula HAVING.

Ejercicio • Mostrar todos los departamentos ( código y sueldo promedio) que tengan un

Ejercicio • Mostrar todos los departamentos ( código y sueldo promedio) que tengan un sueldo promedio mayor que los del departamento 32 SELECT dept_id, AVG(salario) FROM Empleado GROUP BY dept_id HAV ING AVG(salario) > ( SELECT AVG(salario) FROM Empleado WHERE dept_id = 32)

Ejercicio Propuesto Dados los esquemas de relación: Persona(DNI, Nombre, Apellidos, Sexo, Teléfono, Ciudad. Nac,

Ejercicio Propuesto Dados los esquemas de relación: Persona(DNI, Nombre, Apellidos, Sexo, Teléfono, Ciudad. Nac, Fecha. Nac) Trabaja(DNI, Id. Empresa, fechainicio, Sueldo, Ciudad, DNIJefe) Empresa(Id. Empresa, Nomb. Emp) Se solicita: 1. Listar las personas femeninas limeñas que no trabajan 2. Listar nombre y apellidos de los empleados que ganan más que la media de su empresa. 3. Incrementar en 10% el sueldo de las personas que sean mujeres. .

Ejercicio Propuesto Se solicita: 4. Listar los empleados que ganan más que el sueldo

Ejercicio Propuesto Se solicita: 4. Listar los empleados que ganan más que el sueldo medio de Trujillo. 5. Listar nombre y apellidos de las personas de Trujillo que trabajan en más de dos empresas. 6. Listar nombre y apellidos de las personas que trabajan y que tiene la fecha de ingreso mas antigua. 7. Listar nombre y apellidos de las personas que sólo trabajan en una empresa y ganan más que la media de sueldos piuranos. 8. Listar el nombre de la empresa donde se da el sueldo máximo

FIN

FIN