Ayuda ejercicios unidad 4: Consultas multitabla


Ejercicio 1: La composición de tablas

  1. Listar todos los pedidos, mostrando el precio y  la descripción del producto.
    SELECT pedidos.*, precio, descripcion
    
    FROM pedidos INNER JOIN productos ON  fab = idfab AND producto = idproducto;
  2. Listar los pedidos superiores a 250 euros, incluyendo el nombre del vendedor que tomó el pedido y el nombre del cliente que lo solicitó.
    SELECT numpedido, CONVERT(CHAR(8),fechapedido,3) AS fechapedido, clie, rep, fab, producto, cant, importe, clientes.nombre AS cliente, empleados.nombre AS vendedor
    
    FROM (pedidos INNER JOIN empleados ON  rep = numemp)
    
                  INNER JOIN clientes ON clie  = numclie
    
    WHERE importe >  250;
  3. Listar los pedidos superiores a 250 euros, mostrando el nombre del cliente que solicitó el pedido y el nombre del vendedor asignado a ese cliente.
    SELECT pedidos.*, clientes.nombre AS cliente, empleados.nombre AS [vendedor asignado]
    
    FROM (pedidos INNER JOIN clientes ON  clie = numclie)
    
                  INNER JOIN empleados ON  repclie = numemp
    
    WHERE importe >  250;
  4. Listar los pedidos superiores a 250 euros, mostrando además el nombre del cliente que solicitó º  el pedido y el nombre del vendedor asignado a ese cliente y la ciudad de la oficina donde el vendedor trabaja.
    SELECT numpedido, clie,  rep, clientes.nombre  AS cliente, repclie, empleados.nombre AS vendedor, ciudad
    
    FROM ((pedidos INNER JOIN clientes ON  clie = numclie)
    
                   INNER JOIN empleados ON repclie = numemp)
    
                   LEFT JOIN oficinas ON empleados.oficina=oficinas.oficina
    
    WHERE importe >  250;
  5. Hallar los pedidos recibidos los días en que un nuevo empleado fue contratado.
    SELECT numpedido, fechapedido, rep, numemp, nombre, contrato 
    
    FROM pedidos, empleados 
    
    WHERE fechapedido=contrato;
  6. Hallar los empleados que realizaron su primer pedido el mismo día  que fueron contratados.
    SELECT numemp, nombre, contrato, numpedido, rep, fechapedido 
    
    FROM pedidos INNER JOIN empleados ON  rep = numemp
    
    WHERE fechapedido = contrato;
  7. Mostrar de cada empleado su código, nombre, ventas, oficina y ciudad en la que está ubicada su oficina.
    SELECT numemp, nombre,empleados.ventas,empleados.oficina,ciudad
    
    FROM empleados LEFT JOIN oficinas ON  empleados.oficina=oficinas.oficina;
  8. Listar los empleados con una cuota superior a la de su jefe, los campos a obtener son el número, nombre y cuota del empleado y número, nombre y cuota de su jefe.
    SELECT empleados.numemp, empleados.nombre, empleados.cuota, empleados.jefe, jefes.nombre AS [Nombre jefe],  jefes.cuota AS  [Cuota jefe]
    
    FROM empleados LEFT JOIN empleados jefes ON  empleados.jefe =  jefes.numemp;
  9. Desde el entorno gráfico cambia el empleado 111, asígnale el jefe 110 y la oficina 21. Después cambia la sentencia anterior para que salgan también los empleados cuyo jefe no tenga cuota.
    SELECT empleados.numemp, empleados.nombre, empleados.cuota, empleados.jefe, jefes.nombre, jefes.cuota 
    
    FROM empleados INNER  JOIN empleados jefes ON  empleados.jefe =  jefes.numemp
    
    WHERE empleados.cuota > jefes.cuota  OR 
    
         (empleados.cuota IS NOT NULL AND jefes.cuota IS NULL)
  10. Listar los empleados que no están asignados a la misma oficina que su jefe, queremos número, nombre y número de oficina tanto del empleado como de su jefe.
    SELECT e.numemp, e.nombre, e.oficina, e.jefe, j.nombre as [nombre  jefe], j.oficina  AS [oficina jefe]
    
    FROM empleados e INNER JOIN empleados j ON  e.jefe = j.numemp
    
    WHERE e.oficina <> j.oficina;
  11. En el punto anterior no salen los que no tienen oficina, cambiar la sentencia para que aparezcan.
    SELECT  e.numemp, e.nombre, e.oficina, e.jefe, j.nombre as [nombre jefe], j.oficina AS [oficina jefe]
    
    FROM empleados e INNER JOIN empleados j ON e.jefe = j.numemp
    
    WHERE e.oficina <> j.oficina OR e.oficina IS NULL OR j.oficina IS NULL;
  12. Lo mismo que la anterior pero queremos que aparezca también la ciudad de las oficinas (tanto del empleado como de su jefe).
    SELECT e.numemp, e.nombre, e.oficina, ofiemp.ciudad, e.jefe, j.nombre as [nombre jefe], j.oficina AS [oficina jefe], ofijefe.ciudad
    
    FROM (oficinas ofiemp RIGHT JOIN empleados e ON ofiemp.oficina= e.oficina)
    
               INNER JOIN (empleados j LEFT JOIN oficinas ofijefe ON j.oficina = ofijefe.oficina)
    
                           ON e.jefe = j.numemp
    
    WHERE e.oficina <> j.oficina OR e.oficina IS NULL OR j.oficina IS NULL;

Ejercicio 2: Comparar tablas

  1. Obtener los empleados de GestionSimples que aparecen en GestionA con otra oficina.
    SELECT numemp, oficina
    
    FROM gestionsimples.dbo.empleados
    
    EXCEPT
    
    SELECT numemp, oficina
    
    FROM gestionA.dbo.empleados;

   Inicio    





Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies


© aulaClic S.L. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.