You are on page 1of 7

Subconsultas en SQL.

Fundamentos de Base de Datos


Instituto Iacc
02 de julio 2018
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 CODIGO_LIBRO NOMBRE CODIGO_EDITORIAL PRECIO PORC_DESCUENTO


0001 0001 SOLUCIONES DE PROGRAMACION 0001 45.200,16 10
0001 0002 GUIA COMPLETA DE PROGRAMACION EN JAVA 0001 33.520,52 5
0001 0003 INTRODUCCION A LA INFORMATICA 0002 51.000,33 0
0001 0004 HARDWARE Y SOFTWARE 0001 26.700,25 25
0002 0005 INTRODUCCION A LOS ALGORITMOS 0003 36.000,87 30
0002 0006 INTRODUCCION A LAS BASES DE DATOS 0004 52.100,17 40
0003 0007 FUNDAMENTOS DE PROGRAMACION 0001 46.500,29 15
0003 0008 ¿COMO PROGRAMAR EN JAVA? 0002 48.000,33 10
0004 0009 ADMINISTRACION DE BASES DE DATOS 0005 36.500,41 20
0005 0010 ESTRUCTURAS DE DATOS 0002 29.200,27 5
0005 0011 BASES DE DATOS 0003 32.000,39 0
0006 0012 INTRODUCCION A .NET 0001 46.500,14 10

CODIGO_EDITORIAL NOMBRE
0001 BONUM
0002 SIRIO
0003 BIBLIOGRAFICA
0004 GRUPO EDITORIAL RONDA
0005 MCGRAW-HILL

CODIGO_AUTOR NOMBRE
0001 LUIS JOYANES
0002 CATERINA VELASQUEZ
0003 CARMEN GIL
0004 ALVARO GOMEZ
0005 LUIS ANGULO
0006 ANA MARIA VILLAR

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.
Select CÓDIGO_AUTOR, NOMBRE_AUTOR, (Select
Count(CÓDIGO_LIBRO) From LIBRERIA Where AUTOR.CÓDIGO_AUTOR
= LIBRERIA.CÓDIGO_AUTOR) From AUTOR;

2. Liste el código de la editorial, nombre y la cantidad de libros que tiene en el


registro de la librería.

Select CÓDIGO_EDITORIAL, NOMBRE, (Select Count(CÓDIGO_LIBRO)


From LIBRERIA Where EDITORIAL.CÓDIGO_EDITORIAL =
LIBRERIA.CÓDIGO_EDITORIAL) From EDITORIAL;

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%.

Select CÓDIGO_AUTOR, CÓDIGO_EDITORIAL, CÓDIGO_LIBRO,


NOMBRE, PRECIO, PORC_DESCUENTO From LIBRERIA 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%.

Select CÓDIGO_AUTOR, CÓDIGO_EDITORIAL, CÓDIGO_LIBRO,


NOMBRE, PRECIO, PORC_DESCUENTO From LIBRERIA Where
PORC_DESCUENTO <20;

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

SELECT CÓDIGO_AUTOR, SUM(precio)


FROM LIBRERIA
GROUP BY CÓDIGO_AUTOR
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.

SELECT código_autor, SUM(precio)


FROM libreria
GROUP BY código_autor
HAVING SUM(precio) <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.

Según los recursos entregados y mi conocimiento la sentencia SELECT sería bastante


útil, claro que viéndolo de un punto de vista más complejo yo en lo personal lo utilizaría
para la consulta de la calificación doy como ejemplo lo siguiente:

Tengo una tabla de estudiantes, tengo otra tabla con los datos de las asignaturas
tomadas y calificación.

La Sentencia SELECT yo la utilizaría para saber el promedio de asignatura, promedio


general lo que me quedaría como ejemplo lo siguiente:

Calificación por asignatura


SELECT
p.curso_calc, p.asignatura,
(p.calificacion) AS [calificacion_asignatura]
FROM
Prom p
GROUP BY
p.curso_calc, p.asignatura;

Nota Final
SELECT
p.curso_calc,
(p.calificacion) AS [calificacion_asignatura]
FROM
Prom p
GROUP BY
p.curso_calc;

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

La sentencia SELECT, se utiliza para realizar consultas en varias tablas, también


SELECT permite seleccionar las columnas que se van a mostrar y en el orden que lo
hará, es simplemente la instrucción que la base de datos interpreta como que vamos a
solicitar información.
Ejemplo:

SELECT prestamos.id_prestamo AS id, estudiantes.nombre as nombre,


usuarios.apellidos as apellidos, informatica.titulo as titulo,
prestamos.prestamo as prestamo, prestamos.devolucion as devolucion.
FROM prestamos, estudiantes, informatica
WHERE prestamos.id_estudiantes=estudiantes.id_usuario
AND prestamos.id_libro=infrmatica.id_libro
AND prestamos.devolucion='000-0000'
ORDER BY apellidos ASC";

“Dato Útil”
La sentencia SELECT es como un árbol de mensajes que contienen filas, el número de
filas es el resultado de todas estas y apuntan todas las referencias de campo y
referencias en la cláusula FROM, estas son filtradas por la clausula WHERE.

Bibliografía

IACC (2018). Fundamentos de Base de Datos. Semana 6.

http://mysql.conclase.net/curso/?sqlsen=select#inicio

https://www.youtube.com/watch?v=IG67ulJgacU

You might also like