PRACTICA #5
Gestión y Consulta de Datos con SQL
Instructor:Elvin German
Consultas multitablas
Obligatorio
Tablas utilizadas: EMPLEADOS, DEPARTAMENTOS, PEDIDOS, PRODUCTOS y CLIENTES.
Enunciado
1. Obtener una lista de los pedidos con la descripción del producto y el nombre del cliente
clasificados por el número del cliente.
select pe.*, descripcion, nombre
from pedidos pe, productos pr, clientes cl
where pe.producto_no = pr.producto_no
and pe.CLIENTE_NO = cl.cliente_no;
2. Obtener los nombres de los empleados y los nombres de sus departamentos, para aquellos
empleados que no son del departamento VENTAS y que entraron en la empresa después del
1 de enero de 82.
select APELLIDO, DNOMBRE
from empleados e, departamentos d
where d.DEP_NO = (
select dep_no
from departamentos
where dnombre like 'VENTAS'
)
AND fecha_alta > '1982-01-01';
3. Obtener una lista de los apellidos de los vendedores con el importe acumulado de
sus pedidos.
SELECT [Link], SUM(UNIDADES*PRECIO_ACTUAL) AS 'TOTAL
PEDIDO'
FROM PEDIDOS, PRODUCTOS, CLIENTES, EMPLEADOS
WHERE PEDIDOS.PRODUCTO_NO = PRODUCTOS.PRODUCTO_NO
AND PEDIDOS.CLIENTE_NO = CLIENTES.CLIENTE_NO
AND CLIENTES.VENDEDOR_NO = EMPLEADOS.EMP_NO
GROUP BY APELLIDO;
4. Obtener los nombre de los empleados del departamento 30 que son jefes directos
de algún empleado de la empresa, indicando de cuantos empleados son jefes.
select [Link], count([Link])
from empleados e1, empleados e2
where e1.emp_no=[Link]
and e1.DEP_NO = 30
group by [Link];
5. Realizar un listado de los empleados cuyo oficio es EMPLEADO, que incluirá los
números de empleado, los apellidos y los salarios anuales, sabiendo que el salario
anual es el salario multiplicado por 14, e incluyendo en este listado el nombre del
director del empleado.
select e1.emp_no, [Link], [Link]*14 AS 'SALARIO ANUAL',
[Link] AS 'Director'
from empleados e1, empleados e2
where [Link] like 'EMPLEADO'
AND [Link] = E2.EMP_NO
6. Visualizar los productos con el número total de pedidos, las unidades totales
vendidas, y el precio unidad de cada uno de ellos incluyendo los que no tienen
pedidos (en este caso se mostrará un 0 en el total unidades vendidas)
select pr.PRODUCTO_NO, [Link],
count(pe.PRODUCTO_NO) AS 'Numero de pedido',
isnull(sum([Link]),0) AS 'Total de pedidos', pr.precio_actual
from productos pr
LEFT JOIN pedidos pe
ON pr.PRODUCTO_NO = pe.PRODUCTO_NO
group by pr.PRODUCTO_NO,
[Link],
pr.precio_actual;