Sei sulla pagina 1di 17

SQL

CONSULTAS MS COMPLEJAS

CONSULTAS MULTITABLA
En ocasiones necesitamos realizar consultas que involucren a varias tablas. En este caso, los nombres de las tablas aparecen a la derecha de la palabra FROM. SELECT campo1, campo2, ....

FROM tabla1, tabla2, ....


WHERE condicin de combinacin de las tablas

CONSULTAS MULTITABLA
Se pueden incluir tantas tablas como queramos En la clusula 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.NombreColumna

CONSULTAS MULTITABLA
El criterio para combinar las tablas ha de especificarse en la clusula WHERE.
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

Apellidos, oficio, nombre de departamento y localidad de todos los empleados. SELECT apellido,oficio,dnombre,loc FROM emple,depart WHERE emple.dept_no=depart.dept_no;

CONSULTAS MULTITABLA. EJEMPLOS

SQL
Ejemplo de consulta multitabla

Apellido, oficio, nmero de departamento y nombre de departamento de los empleados de los departamentos 10 20. dept_no aparece en dos
SELECT apellido,oficio,emple.dept_no,dnombre FROM emple,depart
tablas, por tanto hay que especificar antes el nombre de la tabla

CONSULTAS MULTITABLA. EJEMPLOS

WHERE emple.dept_no=depart.dept_no AND emple.dept_no IN (10,20);

CONSULTAS MULTITABLA. Qu ocurre si no se especifica el criterio de combinacin EJEMPLOS 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, emple.dept_no, dnombre FROM emple,depart;

En el resultado de la consulta tendramos 16*4=64 filas, en lugar de 14

CONSULTAS MULTITABLA. EJEMPLOS


Tenemos las siguientes tablas:

ALUMNOS(nif,apenom,direc,pobla,telef);
ASIGNATURAS(cod,nombre);

NOTAS(nif,cod,nota);
Relaciones: ALUMNOS(nif)-> NOTAS(nif)

NOTAS(cod) -> ASIGNATURAS(cod)

CONSULTAS MULTITABLA. EJEMPLOS


Apellidos, nombre y nota de todos los alumnos.

SELECT apenom,nombre,nota FROM alumnos,asignaturas,notas WHERE alumnos.nif=notas.nif AND asignaturas.cod=notas.cod;

CONSULTAS MULTITABLA. EJEMPLOS La misma consulta que la


anterior, pero slo los alumnos cuya asignatura es FOL.

SELECT apenom,nombre,nota
FROM alumnos,asignaturas,notas

WHERE alumnos.nif=notas.nif AND asignaturas.cod=notas.cod AND nombre=FOL;

CONSULTAS DE RESUMEN
SQL dispone de una serie de funciones que permiten realizar clculos sobre determinados campos de tablas de la base de datos.
Cul es el salario mximo de los empleados del departamento 10? Cul es la media de salarios del departamento de contabilidad? Cuntos empleados hay en el departamento de ventas?

CONSULTAS DE RESUMEN
Funcin AVG(campo)
COUNT(*|expresin) MAX(campo) MIN(campo) SUM(campo)

Propsito Calcula el valor medio


Cuenta el nmero de veces Calcula el valor mximo Calcula el valor mnimo Obtiene la suma de valores

CONSULTAS DE RESUMEN. EJEMPLOS


Calcular el salario medio de todos los empleados SELECT AVG(salario) FROM emple;

Salario mximo de los empleados del departamento 10.


SELECT max(salario) FROM emple WHERE dept_no=10;

CONSULTAS DE RESUMEN. EJEMPLOS


Nmero de empleados del departamento 10 SELECT COUNT(*) FROM emple WHERE dept_no=10; Nmero de filas de la tabla empleados donde la comisin no es nula

SELECT COUNT(comision) FROM emple WHERE dept_no=10;

CONSULTAS DE RESUMEN. EJEMPLOS


Obtener el apellido mnimo de los empleados del departamento 20.
SELECT min(apellido) FROM emple WHERE dept_no=20; Calcular la suma de salarios y el salario medio de todos los empleados.

SELECT sum(salario),avg(salario) FROM emple;

Potrebbero piacerti anche