Actividad 5 - Subconsultas

Actividad 5 - Subconsultas

Las subconsultas son consultas dentro de otra consulta más externa o dispuestas de forma anidada, y puedes colocarlas en cualquier parte de un SELECT. Es por esto que tal vez las has visto en la lista de campos de la cláusula SELECT, en la cláusula FROM o dentro de WHERE. Las subconsultas pueden devolver tres tipos de resultados: un valor escalar, una columna o lista de valores y una tabla.

Una subconsulta es una instrucción
SELECT
anidada dentro de una instrucción SELECT,
SELECT...INTO, INSERT...INTO, DELETE, o UPDATE
o dentro de otra
subconsulta.

 Curso SQL. Subconsultas I. Vídeo 10. (2015, 4 octubre). [Vídeo]. YouTube. https://www.youtube.com/watch?v=rGPb5E1UAJA&ab_channel=pildorasinformaticas

Curso SQL. Subconsultas II. Vídeo 11. (2015, 22 octubre). [Vídeo]. YouTube. https://www.youtube.com/watch?v=lCpMJ2LFdLg&ab_channel=pildorasinformaticas 

Base de datos para trabajar las subconsultas

Descargar el siguiente archivo y continuar con el manejo de las subconsultas.

https://www.dropbox.com/s/ax8ukkhg4gx6xq1/Explicacion%20de%20subconsultas.txt?dl=0 

Ejercicio Subconsultas:

Ejercicio Subconsultas:


1. - calcular valorventa aumentando un 17% del valorunitario.

-tablas a consultar: producto

-comando: update

-sintaxis: update producto set valorventa=(select valorunitario+(valorunitario*0.17) where producto.codigo);

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;

select cliente.nombre 'Nombre de los clientes que no poseen facturas',cliente.cedula,factura.nrofactura from cliente left join factura on cliente.cedula = factura.cedula where factura.nrofactura is null;

Vincent Sinope / Dj y Productor / Todos los derechos reservados
Creado con Webnode Cookies
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar
Utilizamos cookies para permitir un correcto funcionamiento y seguro en nuestra página web, y para ofrecer la mejor experiencia posible al usuario.

Configuración avanzada

Puedes personalizar tus preferencias de cookies aquí. Habilita o deshabilita las siguientes categorías y guarda tu selección.