Jardineria - Consultes variades
-
Retorna la llista de clients indicant el nom del client i quantes comandes ha realitzat. Tingues en compte que poden existir clients que no han realitzat cap comanda. I en aquest cas cal que indiqui 0.
Possible solució
SELECT codigo_cliente, nombre_cliente, COUNT(codigo_pedido) FROM cliente LEFT JOIN pedido USING (codigo_cliente) GROUP BY codigo_cliente, nombre_cliente;Al comptar un camp que pot tenir valor
NULL, si no ha pogut fer elJOINambpedido...... aquest valor comptarà 0. No hagués fet el mateix COUNT(*).
-
Retorna una llista amb els noms dels clients i el total pagat por cadascun d'ells. Tingues en compte que poden existir clients que no han realitzat cap pagament. En aquests, que surti 0.
Possible solució
SELECT codigo_cliente, nombre_cliente, SUM(IFNULL(total, 0)) FROM cliente LEFT JOIN pago USING (codigo_cliente) GROUP BY codigo_cliente, nombre_cliente;Al sumar un camp que pot tenir valor
NULL, si no ha pogut fer el JOIN ambpedido,SUM(total)sumaràNULL... per tal que sumi 0 cal utilitzar
SUM(IFNULL(total, 0)). -
Retorna el nom dels clients que hagin fet comandes el
2008ordenats alfabèticament de menor a major.Possible solució
SELECT nombre_cliente FROM cliente WHERE codigo_cliente IN (SELECT codigo_cliente FROM pedido WHERE YEAR(fecha_pedido) = 2008) ORDER BY 1; -
Retorna el nom del client, el nom i primer cognom del seu representant de vendes i el número de telèfon de l'oficina del representante de vendes, d'aquells clients que no hagin realitzat cap pagament.
Possible solució
SELECT nombre_cliente, nombre, apellido1, o.telefono FROM cliente JOIN empleado ON (codigo_empleado = codigo_empleado_rep_ventas) JOIN oficina o USING(codigo_oficina) WHERE codigo_cliente NOT IN (SELECT DISTINCT codigo_cliente FROM pago); -
Retorna la llista de clients on aparegui el nom del client, el nom i primer cognom del seu representant de vendes i la ciudad on hi ha la seva oficina.
Possible solució
SELECT nombre_cliente, nombre, apellido1, o.ciudad FROM cliente JOIN empleado ON (codigo_empleado = codigo_empleado_rep_ventas) JOIN oficina o USING(codigo_oficina); -
Retorna el nom, cognoms, lloc de treball i telèfon de l'oficina d'aquells empleats que no siguin representanta de vendes de cap client.
Possible solució
SELECT nombre, apellido1, apellido2, puesto, o.telefono FROM empleado JOIN oficina o USING(codigo_oficina) WHERE codigo_empleado NOT IN (SELECT DISTINCT codigo_empleado_rep_ventas FROM cliente); -
Retorna una llista indicant totes les ciutats on hi ha oficines i el nombre d'empleats que té.
Possible solució
SELECT ciudad, COUNT(*) FROM oficina JOIN empleado USING (codigo_oficina) GROUP BY ciudad;