Salta el contingut

Jardineria - Consultes multitaula - Composició interna

Resol totes les consultes utilitzant la sintaxis SQL. Utilitza NATURAL JOIN, JOIN USING o JOIN ON, la que millor s'adapti a cada consulta.

  1. Obté una llista amb el nom de cada client i el nom i cognoms del seu representant de vendes.

    Possible solució
    SELECT c.nombre_cliente, CONCAT_WS(' ', e.nombre, e.apellido1, e.apellido2) nombre_representante
    FROM cliente c JOIN 
        empleado e ON (c.codigo_empleado_rep_ventas = e.codigo_empleado);
    
  2. Mostra el nom dels clients que hagin realitzat pagaments, amb el nom dels seus representants de vendes.

    Possible solució
    SELECT DISTINCT c.nombre_cliente, CONCAT_WS(' ', e.nombre, e.apellido1, e.apellido2) nombre_representante
    FROM cliente c NATURAL JOIN
         pago p JOIN
         empleado e ON (c.codigo_empleado_rep_ventas = e.codigo_empleado);
    

    Al fer un JOIN amb una altra taula de costat Molts, podem arribar a tenir files repetides

  3. Retorna el nom dels clients que han fet pagaments i el nom dels seus representants, amb la ciudad de l'oficina a la que pertany el representant.

    Possible solució
    SELECT DISTINCT c.nombre_cliente, CONCAT_WS(' ', e.nombre, e.apellido1, e.apellido2) nombre_representante, o.ciudad
    FROM cliente c NATURAL JOIN
        pago p JOIN
        empleado e ON (c.codigo_empleado_rep_ventas = e.codigo_empleado) JOIN
        oficina o USING (codigo_oficina);
    
  4. Retorna el nom dels clients que no hagin fet pagaments i el nom dels seus representants, amb la ciudad de l'oficina a la que pertany el representant. (LEFT or RIGHT)

    Possible solució
    SELECT c.nombre_cliente, e.nombre, apellido1, apellido2, o.ciudad
    FROM cliente c NATURAL LEFT JOIN
         pago p JOIN
         empleado e ON (c.codigo_empleado_rep_ventas = e.codigo_empleado) JOIN
        oficina o USING (codigo_oficina)
    WHERE forma_pago IS NULL;
    
  5. Llista l'adreça de les oficines que tinguin clients a Fuenlabrada.

    Possible solució
    SELECT o.linea_direccion1, o.linea_direccion2, o.ciudad
    FROM oficina o NATURAL JOIN 
         empleado e JOIN 
         cliente c ON (c.codigo_empleado_rep_ventas = e.codigo_empleado)
    WHERE c.ciudad = 'Fuenlabrada'
    
  6. Retorna el nom dels clients i el nom dels seus representants, amb la ciudad de l'oficina a la que pertany el representant.

    Possible solució
    SELECT c.nombre_cliente, e.nombre, e.apellido1, e.apellido2, o.ciudad
    FROM empleado e JOIN 
         cliente c ON (c.codigo_empleado_rep_ventas = e.codigo_empleado) JOIN 
         oficina o USING(codigo_oficina)
    
  7. Retorna una llista amb el nom dels empleats, amb el nom dels seus cap.

    Possible solució
    SELECT e.nombre, e.apellido1, e.apellido2, j.nombre, j.apellido1, j.apellido2
    FROM empleado e JOIN 
         empleado j ON (e.codigo_jefe = j.codigo_empleado)
    
  8. Retorna una llista que mostri el nom de cada empleat, el nom del seu cap i el nom del cap del seu cap.

    Possible solució
    SELECT e.nombre, e.apellido1, e.apellido2, j.nombre, j.apellido1, j.apellido2, jj.nombre, jj.apellido1, jj.apellido2
    FROM empleado e JOIN 
         empleado j ON (e.codigo_jefe = j.codigo_empleado) JOIN
         empleado jj ON (j.codigo_jefe = jj.codigo_empleado)
    
  9. Retorna el nom dels clients als que no se'ls ha entregat a temps alguna comanda. Afegeix els camps de data d'entrega i data esperada d'entrega.

    Possible solució
    SELECT nombre_cliente, fecha_entrega, fecha_esperada
    FROM cliente NATURAL JOIN pedido
    WHERE fecha_entrega > fecha_esperada
    
  10. Retorna una llista de les diferents games de producte que ha comprat cada client.

    Possible solució
    SELECT DISTINCT gama, nombre_cliente
    FROM cliente NATURAL JOIN 
         pedido NATURAL JOIN 
         detalle_pedido NATURAL JOIN
         producto