Taller 3,
Tema: Subconsultas
Extraído de: https://sistemasremington.webnode.com/_files/200000165-46d2d47cf0/Ejercicio_SubConsultas%20(2).txt
Planteamiento:
1. - calcular valorventa aumentando un 17% del valorunitario.
-tablas a consultar: producto
-comando: update
-sintaxis: Update producto set valorventa = valorunitario * 1.17;
2. Llevar el valorventa a valor de detallefactura segun articulo comprado.
-tablas a consultar: producto y detallefactura
-comando: update
-condición: producto.codigo = detallefactura.codigo
-sintaxis: Update detallefactura set valor = (Select valorventa From producto where producto.codigo = detallefactura.codigo);
3. Calcular el total en la tabla detallefactura (cantidad x valor)
-tablas a consultar: detalle factura
-comando: update
sintaxis: Update detallefactura set total = cantidad * valor;
4. Calcular cuanto es el subtotal de cada factura y guardarlo en el campo respectivo
-tablas a consultar: factura y detallefactura
-comando: update
-condición: detallefactura.nrofactura = factura.nrofactura
-agrupar datos: nro factura
-sintaxis: Update factura set subtotal = (Select sum(detallefactura.total) From detallefactura where detallefactura.nrofactura = factura.nrofactura group by detallefactura.nrofactura);
5. Calcular el iva (16% del subtotal), la retencion(3.5% del subtotal) y el total(subtotal + iva - retencion)
-tablas a consultar: factura
-comando: update
-sintaxis: Update factura set iva = subtotal * 0.16, retencion = subtotal * 0.035, total = subtotal * (1 + 0.16 - 0.035);
6. Calcular cuales son las existencias de cada articulo
-tablas a consultar: producto y detallefactura
-Datos a consultar: existencias de la tabla producto
-Nota: para lograr calcular las existencias de cada articulo, se obtiene de la siguiente manera:
Existencias de la tabla producto menos suma(cantidad) de cada producto de la tabla detallefactura.
-condición: detallefactura.codigo = producto.codigo
-comando: update
-sintaxis: update producto set existencia = cantidad - (select sum(cantidad) from detallefactura where detallefactura.codigo = producto.codigo group by detallefactura.codigo);
7. total de facturas de cada cliente
-tablas a consultar: factura y cliente
-Nota: mostrar Cedula, nombre, sum(total)
-condición: cliente.cedula = factura.cedula
-agrupar datos: cedula y nombre
sintaxis: select c.cedula, c.nombre, sum(f.total) 'Total' from cliente c inner join factura f on f.Cedula = c.Cedula group by c.cedula, c.nombre order by c.nombre;
8. Listar el total de ventas de cada producto
-tablas a consultar: detallefactura y producto
-nota: mostrar codigo, articulo, sum(total)
-condición: detallefactura.codigo = producto.codigo
-agrupar datos: codigo y articulo
-sintaxis: select producto.codigo, producto.articulo, sum(detallefactura.total) 'Total' from producto inner join detallefactura on detallefactura.codigo = producto.codigo group by producto.codigo, producto.articulo order by producto.articulo;
9. Listar las facturas y el valor de cada una segun las compra de alexandra lopez
-tablas a consultar: factura y cliente
-nota: mostrar nrofactura, sum(total)
-condición: cliente.cedula = factura.cedula y seleccionar el cliente con cedula = 100
-agrupar datos: nrofactura
-sintaxis: select factura.nrofactura, sum(factura.total) 'Total' from cliente inner join factura on factura.Cedula = cliente.Cedula where cliente.cedula = 100 group by factura.nrofactura order by factura.nrofactura;
10. Crear una tabla detallado dentro de la base de datos subconsultas con los campos:
-id auto incremento
-cedula
-nrofactura
-totalarticulos
-valortotal
sintaxis: Create table detallado(Id int(4) unsigned zerofill not null auto_increment primary key, cedula int(10) not null, nrofactura int(4) not null, totalarticulos int(4) not null, valortotal float not null)
11. Crear una subconsulta para ingresar estos datos a la tabla nueva.
-cedula del cliente
-numero de facturas del cliente
-suma de los articulos de cada factura
-total pagado de cada factura
sintaxis: insert into detallado(cedula, nrofactura, totalarticulos, valortotal)
select c.cedula, f.nrofactura, sum(df.cantidad), sum(f.total) from cliente c inner join factura f on f.Cedula = c.Cedula inner join detallefactura df on df.nrofactura = f.nrofactura group by c.cedula, f.nrofactura;
12. Eliminar las facturas de los clientes que hayan iniciado vinculo con la empresa antes de 2004.
-tablas a consultar: factura, detallefactura y cliente
-nota: Borrar facturas de las tablas factura y detallefactura, para clientes con fecha de inicio < 2004-01-01
-condición: cliente.cedula = factura.cedula y detallefactura.nrofactura = factura.nrofactura
-comando: Delete
-sintaxis: delete from detallefactura where nrofactura = (select factura.nrofactura from cliente inner join factura on factura.Cedula = cliente.Cedula where cliente.fechainicio < '2004-01-01' and detallefactura.nrofactura = factura.nrofactura);
delete from factura where cedula = (select cliente.cedula from cliente where cliente.Cedula = factura.Cedula and cliente.fechainicio < '2004-01-01');
13. Listar los clientes que no tienen facturas
-tablas a consultar: factura y cliente
-nota: mostrar cedula, nombre
-condición: cliente.cedula = factura.cedula
-sintaxis: select cliente.cedula, cliente.nombre from cliente left join factura on factura.Cedula = cliente.Cedula where factura.cedula is null order by cliente.nombre;
En este archivo se encuentra el tee del taller subconsultas.