Jardineria - Subconsultes
Amb operadors bàsics de comparació
-
Retorna el nom del client amb el límit de crèdit major.
Possible solució
SELECT nombre_cliente, limite_credito FROM cliente WHERE limite_credito = (SELECT MAX(limite_credito) FROM cliente); -
Retorna el nom del producte que té el preu de venda més car.
Possible solució
SELECT nombre, precio_venta FROM producto WHERE precio_venta = (SELECT MAX(precio_venta) FROM producto); -
Els clients amb límit de crèdit major que els pagaments que hagi realitzat. (Sense utilitzar
JOIN).Possible solució
SELECT nombre_cliente, limite_credito FROM cliente c WHERE limite_credito > (SELECT SUM(total) FROM pago p WHERE p.codigo_cliente = c.codigo_cliente);En aquest cas, a la subconsulta, fem referència a un camp de la consulta principal
-
Retorna el producte que té més unitats en stock.
Possible solució
SELECT codigo_producto, nombre, CANTIDAD_EN_STOCK FROM producto WHERE cantidad_en_stock = (SELECT MAX(cantidad_en_stock) FROM producto); -
Retorna el producte que té menys unitats en stock.
Possible solució
SELECT codigo_producto, nombre, CANTIDAD_EN_STOCK FROM producto WHERE cantidad_en_stock = (SELECT MIN(cantidad_en_stock) FROM producto); -
Retorna el nom, els cognoms i l'email dels empleats que estan a càrrec de
Alberto Soria.Possible solució
SELECT nombre, apellido1, apellido2, email FROM empleado WHERE codigo_jefe = (SELECT codigo_empleado FROM empleado WHERE NOMBRE = 'Alberto' AND apellido1 = 'Soria');Subconsultes amb
ALLiANY -
Retorna el nom del producte del que s'han venut més unitats. (Tingues en compte que cal calcular el nombre total d'unitats venudes de cada producte a partir deles dades de la taula
detalle_pedido)Possible solució
SELECT codigo_producto, sum(cantidad), nombre FROM detalle_pedido JOIN producto USING (codigo_producto) GROUP BY codigo_producto, nombre HAVING SUM(cantidad) >= ALL (SELECT SUM(cantidad) FROM detalle_pedido GROUP BY codigo_producto);En MariaDB i MySQL no podem utilitzar MAX(SUM(cantidad))
I al posar
>= ALLequival a= MAX -
Retorna el nom del client amb més límit de crèdit.
Possible solució
Amb ALLSELECT nombre_cliente, limite_credito FROM cliente WHERE limite_credito >= ALL (SELECT limite_credito FROM cliente);o bé
Amb = MAXSELECT nombre_cliente, limite_credito FROM cliente WHERE limite_credito = (SELECT MAX(limite_credito) FROM cliente); -
Retorna el nom del producte que té el preu de venta més car.
Possible solució
Amb ALLSELECT nombre, precio_venta FROM producto WHERE precio_venta >= ALL (SELECT precio_venta FROM producto);o bé
Amb = MAXSELECT nombre, precio_venta FROM producto WHERE precio_venta = ALL (SELECT MAX(precio_venta) FROM producto); -
Retorna el producte que té menys unitats en stock.
Possible solució
Amb ALLSELECT nombre, cantidad_en_stock FROM producto WHERE cantidad_en_stock <= ALL (SELECT cantidad_en_stock FROM producto);o bé
Amb = MINSELECT nombre, cantidad_en_stock FROM producto WHERE cantidad_en_stock = (SELECT MIN(cantidad_en_stock) FROM producto);Subconsultes con
INiNOT IN -
Retorna el
nombre,apellido1icargodels empleats que no representen a cap client.Possible solució
SELECT nombre, apellido1, apellido2, puesto FROM empleado WHERE codigo_empleado NOT IN (SELECT codigo_empleado_rep_ventas FROM cliente); -
Retorna una llista que mostri només els clients que no han realitzat cap pagament.
Possible solució
SELECT nombre_cliente FROM cliente WHERE codigo_cliente NOT IN (SELECT DISTINCT codigo_cliente FROM pago); -
Retorna una llista que mostri només els clients que sí han realitzat algún pagament.
Possible solució
SELECT nombre_cliente FROM cliente WHERE codigo_cliente IN (SELECT DISTINCT codigo_cliente FROM pago); -
Retorna una llista dels productes que no han aparegut mai a cap comanda.
Possible solució
SELECT codigo_producto, nombre FROM producto WHERE codigo_producto NOT IN (SELECT DISTINCT codigo_producto FROM detalle_pedido); -
Retorna el nom, cognoms, lloc de treball i telèfon de l'oficina d'aquells empleats que no son representant de vendes de cap client.
Possible solució
SELECT nombre, apellido1, apellido2, puesto FROM empleado WHERE codigo_empleado NOT IN (SELECT DISTINCT codigo_empleado_rep_ventas FROM cliente); -
Retorna les oficinas on no treballa cap dels empleats que sigui representant de vendes d'algún client que hagi realitzat la compra de algún producte de la gama
Frutales.Possible solució
SELECT codigo_oficina, linea_direccion1, linea_direccion2, ciudad, telefono FROM oficina WHERE codigo_oficina NOT IN (SELECT DISTINCT codigo_oficina FROM empleado JOIN cliente ON (codigo_empleado = codigo_empleado_rep_ventas) JOIN pedido USING (codigo_cliente) JOIN detalle_pedido USING (codigo_pedido) JOIN producto USING (codigo_producto) JOIN gama_producto USING (gama) WHERE gama = 'Frutales' ); -
Retorna una llista amb els clients que han realitzat alguna comanda però no han realitzat cap pagament.
Possible solució
SELECT nombre_cliente FROM cliente WHERE codigo_cliente IN (SELECT DISTINCT codigo_cliente FROM pedido) AND codigo_cliente NOT IN (SELECT DISTINCT codigo_cliente FROM pago);Subconsultes amb
EXISTSiNOT EXISTS -
Retorna una llista que mostri només els clients que no han realitzat cap pagament.
Possible solució
SELECT nombre_cliente FROM cliente c WHERE NOT EXISTS (SELECT * FROM pedido p WHERE p.codigo_cliente = c.codigo_cliente); -
Retorna una llista que mostri només els clients que sí han realitzat algún pagament.
Possible solució
SELECT nombre_cliente FROM cliente c WHERE EXISTS (SELECT * FROM pedido p WHERE p.codigo_cliente = c.codigo_cliente); -
etorna una llista dels productes que mai han aparegut en una comanda.
Possible solució
SELECT codigo_producto, nombre, gama FROM producto p WHERE NOT EXISTS (SELECT * FROM detalle_pedido dp WHERE p.codigo_producto = dp.codigo_producto); -
Retorna una llista dels productes que han aparegut en alguna comanda, alguna vegada.
Possible solució
SELECT codigo_producto, nombre, gama FROM producto p WHERE EXISTS (SELECT * FROM detalle_pedido dp WHERE p.codigo_producto = dp.codigo_producto);