SQL

•CONSULTAS MÁS COMPLEJAS

21/01/2014

.. ..CONSULTAS MULTITABLA En ocasiones necesitamos realizar consultas que involucren a varias tablas.. WHERE condición de combinación de las tablas 21/01/2014 .. FROM tabla1. . campo2. tabla2.. SELECT campo1. los nombres de las tablas aparecen a la derecha de la palabra FROM. En este caso.

NombreColumna 21/01/2014 .CONSULTAS MULTITABLA Se pueden incluir tantas tablas como queramos En la cláusula SELECT se pueden citar columnas de todas las tablas Si hay columnas con el mismo nombre en las distintas tablas. se deben especificar de la forma NombreTabla.

CONSULTAS MULTITABLA El criterio para combinar las tablas ha de especificarse en la cláusula WHERE. 21/01/2014 . Si no se hace. el resultado es un PRODUCTO CARTESIANO que empareja todas las filas de una tabla con cada fila de otra.

EJEMPLOS Vamos a realizar consultas sobre las tablas emple y depart 21/01/2014 .

oficio.dnombre. 21/01/2014 .CONSULTAS MULTITABLA. nombre de departamento y localidad de todos los empleados.loc FROM emple.depart WHERE emple.oficio.dept_no=depart. SELECT apellido.dept_no. EJEMPLOS Apellidos.

SQL •Ejemplo de consulta multitabla 21/01/2014 .

dept_no AND emple.oficio.emple.CONSULTAS MULTITABLA.20). por tanto hay que especificar antes el nombre 10 ó 20. oficio.dept_no=depart. de la tabla SELECT apellido.dept_no IN (10.depart WHERE emple.dnombre FROM emple. número de departamento y nombre de dept_no aparece en dos departamento de los empleados de los departamentos tablas. EJEMPLOS Apellido. 21/01/2014 .dept_no.

depart. EJEMPLOS ¿Qué ocurre si no se especifica el criterio de combinación de tablas? En este caso el resultado es un producto cartesiano que combina todas las filas de una tabla con los de la otra SELECT apellido.dept_no. en lugar de 14 21/01/2014 . emple. En el resultado de la consulta tendríamos 16*4=64 filas. dnombre FROM emple.CONSULTAS MULTITABLA.

direc. NOTAS(nif.nota).apenom.cod.CONSULTAS MULTITABLA. Relaciones: ALUMNOS(nif)-> NOTAS(nif) NOTAS(cod) -> ASIGNATURAS(cod) 21/01/2014 . ASIGNATURAS(cod.pobla.telef). EJEMPLOS Tenemos las siguientes tablas: ALUMNOS(nif.nombre).

nombre. SELECT apenom.CONSULTAS MULTITABLA.cod.nota FROM alumnos.asignaturas. EJEMPLOS Apellidos.nif=notas.cod=notas.notas WHERE alumnos.nif AND asignaturas. nombre y nota de todos los alumnos. 21/01/2014 .

nif=notas.CONSULTAS MULTITABLA.nota FROM alumnos.notas WHERE alumnos. 21/01/2014 .cod AND nombre=’FOL’. pero sólo los alumnos cuya asignatura es FOL.asignaturas. EJEMPLOS La misma consulta que la anterior.cod=notas.nif AND asignaturas. SELECT apenom.nombre.

¿Cuál es el salario máximo de los empleados del departamento 10? ¿Cuál es la media de salarios del departamento de contabilidad? ¿Cuántos empleados hay en el departamento de ventas? 21/01/2014 .CONSULTAS DE RESUMEN SQL dispone de una serie de funciones que permiten realizar cálculos sobre determinados campos de tablas de la base de datos.

21/01/2014 . Salario máximo de los empleados del departamento 10. SELECT max(salario) FROM emple WHERE dept_no=10. EJEMPLOS Calcular el salario medio de todos los empleados SELECT AVG(salario) FROM emple.CONSULTAS DE RESUMEN.

EJEMPLOS Número de empleados del departamento 10 SELECT COUNT(*) FROM emple WHERE dept_no=10. 21/01/2014 .CONSULTAS DE RESUMEN. Número de filas de la tabla empleados donde la comisión no es nula SELECT COUNT(comision) FROM emple WHERE dept_no=10.

EJEMPLOS Obtener el apellido mínimo de los empleados del departamento 20. SELECT sum(salario).CONSULTAS DE RESUMEN. 21/01/2014 . Calcular la suma de salarios y el salario medio de todos los empleados.avg(salario) FROM emple. SELECT min(apellido) FROM emple WHERE dept_no=20.