Control 6 Fundamentos de Bases de Datos

Control Semana 6 Subconsultas en SQL Fundamentos de Base de Datos Instituto IACC INSTRUCCIONES Fase I: Se tienen las s

Views 170 Downloads 4 File size 176KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Control Semana 6 Subconsultas en SQL Fundamentos de Base de Datos Instituto IACC

INSTRUCCIONES Fase I: Se tienen las siguientes tablas que registran para una librería los datos de los libros, así como los datos de la editorial y autor. CODIGO_AUTOR 0001 0001 0001 0001 0002 0002 0003 0003 0004 0005 0005 0006

CODIGO_LIBRO 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012

NOMBRE SOLUCIONES DE PROGRAMACION GUIA COMPLETA DE PROGRAMACION EN JAVA INTRODUCCION A LA INFORMATICA HARDWARE Y SOFTWARE INTRODUCCION A LOS ALGORITMOS INTRODUCCION A LAS BASES DE DATOS FUNDAMENTOS DE PROGRAMACION ¿COMO PROGRAMAR EN JAVA? ADMINISTRACION DE BASES DE DATOS ESTRUCTURAS DE DATOS BASES DE DATOS INTRODUCCION A .NET

CODIGO_EDITORIAL 0001 0001 0002 0001 0003 0004 0001 0002 0005 0002 0003 0001

CODIGO_EDITORIAL 0001 0002 0003 0004 0005

NOMBRE BONUM SIRIO BIBLIOGRAFICA GRUPO EDITORIAL RONDA MCGRAW-HILL

CODIGO_AUTOR 0001 0002 0003 0004 0005 0006

NOMBRE LUIS JOYANES CATERINA VELASQUEZ CARMEN GIL ALVARO GOMEZ LUIS ANGULO ANA MARIA VILLAR

PRECIO 45.200,16 33.520,52 51.000,33 26.700,25 36.000,87 52.100,17 46.500,29 48.000,33 36.500,41 29.200,27 32.000,39 46.500,14

PORC_DESCUENTO 10 5 0 25 30 40 15 10 20 5 0 10

Según los datos anteriormente mostrados, entregue las siguientes consultas, incluyendo las subconsultas en la cláusula que considere adecuada:

1.- Liste el código del autor, nombre y la cantidad de libros que tiene en el registro de la librería. RESPUESTA: SELECT

A.CODIGO_AUTOR, A.NOMBRE AS NOMBRE_AUTOR, (SELECT COUNT(B.NOMBRE) FROM tb_libros B WHERE A.CODIGO_AUTOR = B.CODIGO_AUTOR) AS CANTIDAD_LIBROS FROM tb_autor A;

2.- Liste el código de la editorial, nombre y la cantidad de libros que tiene en el registro de la librería. RESPUESTA: SELECT

A.CODIGO_EDITORIAL, A.NOMBRE AS NOMBRE_AUTOR, (SELECT COUNT(B.NOMBRE) FROM tb_libros B WHERE A.CODIGO_EDITORIAL = B.CODIGO_EDITORIAL) AS CANTIDAD_LIBROS FROM tb_editorial A;

3.- Liste el código de autor, código de libro, nombre, código de editorial y precio, de aquellos libros que tengan un porcentaje de descuento igual o mayor al 15%. RESPUESTA: SELECT

A.CODIGO_AUTOR, A.CODIGO_LIBRO, A.NOMBRE, A.CODIGO_EDITORIAL, A.PRECIO, FROM tb_libros A WHERE PORC_DESCUENTO >= 15;

4.-Liste el código de autor, código de libro, nombre, código de editorial y precio, de aquellos libros que tengan un porcentaje de descuento menor al 20% RESPUESTA: SELECT

A.CODIGO_AUTOR, A.CODIGO_LIBRO, A.NOMBRE, A.CODIGO_EDITORIAL, A.PRECIO, FROM tb_libros A WHERE PORC_DESCUENTO < 20;

5.-Liste el código de autor, y la suma de los precios de los libros que le pertenecen. RESPUESTA: SELECT

A.CODIGO_AUTOR, (SELECT SUM(B.PRECIO) FROM tb_libros B WHERE A.CODIGO_AUTOR = B.CODIGO_AUTOR) AS SUMA_PRECIO_POR_AUTOR FROM tb_autor A;

6.-Liste el código de autor, y la suma de los precios de los libros que le pertenecen, mostrando sólo aquellos donde la suma de sus precios sea menor a 40.000 pesos. RESPUESTA: SELECT

A.CODIGO_AUTOR, (SELECT SUM(B.PRECIO) FROM tb_libros B WHERE A.CODIGO_AUTOR = B.CODIGO_AUTOR) AS SUMA_PRECIO_POR_AUTOR FROM tb_autor A WHERE (SELECT SUM(B.PRECIO) FROM tb_libros B WHERE A.CODIGO_AUTOR = B.CODIGO_AUTOR) < 40000;

Fase II: Lea determinadamente y fundamente su respuesta: 1.- Suponga que un Instituto Profesional tiene en su base de datos una tabla de ESTUDIANTES (con los datos de estos), una de ASIGNATURAS_ESTUDIANTES (con los datos de las asignaturas tomadas por cada estudiante y la calificación obtenida). De acuerdo a este esquema, ¿cree usted que sea útil el SELECT con múltiples tablas?, ¿para qué caso lo utilizaría? Fundamente su respuesta. RESPUESTA: La consulta “SELECT” con múltiples tablas, según el material entregado durante este periodo de aprendizaje, sirve para el caso planteado en la pregunta, pues podríamos unir las tablas usando “INNER JOIN”, nos entregaría todos los datos que coinciden en las tablas propuestas, deben tener claves primarias relacionadas; los datos también podemos obtenerlos usando “LEFT JOIN o RIGHT JOIN”, estas consultas sirven para generar informes, pues en unas sola consulta podemos saber la información de varias tablas. Ejemplo: SELECT A.rut_estudiante, A.nombre_estudiante, B.Asignatura (SUM(B.NOTAS)/(SELECT COUNT(B.NOTAS) FROM ASIGNATURAS_ESTUDIANTES C WHERE A.rut_estudiante = C.rut_estudiante)) AS PROMEDIO_NOTAS FROM ESTUDIANTES A INNER JOIN ASIGNATURAS_ESTUDIANTES B ON A.rut_estudiante = B.rut_estudiante

2.- Imagínese que la biblioteca de una Universidad tiene en su base de datos una tabla de ESTUDIANTES (con los datos de estos), una de LIBROS_ESTUDIANTES (con los datos de los libros solicitados por cada estudiante y la fecha de cada préstamo). De acuerdo a este esquema, ¿cree usted que sea útil el SELECT con múltiples tablas?, ¿para qué caso lo utilizaría? Fundamente su respuesta. RESPUESTA: Aquí también podemos unir tablas relacionadas, para mostrar los campos que necesitemos, las tablas de estudiantes, libros y también una subconsulta que refleja la cantidad de libros que tiene cada estudiante y una clausula “WHERE” con “BETWEEN” para reflejar las fechas de la búsqueda. Ejemplo: SELECT A.RUT_ESTUDIANTE, A.NOMBRE, B.LIBROS, (SELECT COUNT(C.NOMRE_LIBROS) FROM LIBROS_ESTUDIANTES C WHERE A.RUT_ESTUDIANTE = C.RUT_ESTUDIANTE ) AS CANTIDAD DE LIBROS FROM ESTUDIANTES A INNER JOIN LIBROS_ESTUDIANTES B ON A.RUT_ESTUDIANTE = B.RUT_ESTUDIANTE WHERE B.FECHA_PRESTAMO BETWEEN '20190331' AND '20190101'

Bibliografía Semana 6 IACC, SQL: Lenguaje para la definición, manipulación y control de bases de datos relacionales III http://online.iacc.cl/pluginfile.php/4654118/mod_resource/content/2/06_Fundamentos_de_B ases_de_Datos.pdf MySQL 5.0 Manual, Funciones de manejo de cadenas de caractereshttp://ftp.nchu.edu.tw/MySQL/doc/refman/5.0/es/string-functions.html