Subconsultas en SQL Buri Jimenez Cortes Fundamentos de bases de datos Instituto IACC 06-08-2018
INSTRUCCIONES: 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.
Desarrollo 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 Codigo_autor, Nombre, FROM autor WHERE (select COUNT (*) FROM libreria WHERE codigo_libro);
2. Liste el código de la editorial, nombre y la cantidad de libros que tiene en el registro de la librería. SELECT Codigo_editorial, Nombre, FROM editorial WHERE (select COUNT (*) FROM libreria WHERE codigo_libro);
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 Codigo_autor, codigo_libro Nombre, Codigo_editorial FROM editorial WHERE porcent_descuento = < 0,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 Codigo_autor, codigo_libro Nombre, Codigo_editorial FROM editorial WHERE porcent_descuento > 0,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 librería 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 solo aquellos donde la suma de sus precios sea menor a 40.000 pesos SELECT código_autor, SUM(precio) FROM librería GROUP BY código_autor HAVING SUM(precio) > 40.000
Fase II 1La instrucción JOIN nos permite combinar varias tablas haciendo co incidir los valores de las columnas que nos interesen. Es decir, si tenemos dos tablas 1 y 2 que contienen una (o más) columnas con el mismo nombre, podemos relacionar ambas tablas por la columna del mismo nombre. Acá debemos tener en cuenta que cada registro de la columna en la tabla 1 que también esté en la columna de la tabla 2, obtendremos una relación. Lo que quiere decir que se produce un producto cartesiano de cada valor de la columna de la tabla 1, por todos los valores coincidentes de la columna en la tabla 2.”
Lo cual se quiere indicar es que esta instrucción nos permite relacionar las tablas en tre si. Sin haber confusiones o redundancias en el contenido, ya que se tiene que llegar a describir cuidadosamente la tabla o también ponerle un nombre o sigla particular con el fin de poder identificarla de una manera más eficaz. En las bases de datos continuamente estamos ingresando datos, modificándolos y también solicitando reportes del contenido o informes; por lo que de no contar con una instrucción como JOIN, sería muy complicado o trabajoso realizar este tipo de combinaciones de tablas y su contenido. Por lo tanto, lo usaría en todos las bases de datos que necesite conjugar tablas y su contenido. Ejemplo: Se debe usar. SELECT * FROM tabla1 INNER JOIN tabla2 USING (id) INNER JOIN tabla3 USING(id);
INNER JOIN hace que la consulta devuelva todos los campos de Tabla1 que coincidan en el o los campos listados en el USING (). - Esta cláusula requiere que los campos comparados tengan el mismo nombre en ambas tablas.
- Si los campos no tienen el mismo nombre, se debe especificar campo por campo de esta forma: Código sql: SELECT * FROM tabla1 t1 INNER JOIN tabla2 t2 ON t1.id = t2.id INNER JOIN tabla3 t3 ON t1.id = t3.id;
- Si deben concidir más de un campo se usa también la cláusula AND: Código sql:
SELECT * FROM tabla1 t1 INNER JOIN tabla2 t2 ON t1.id = t2.id AND t1.campo2 = t2.campo3 INNER JOIN tabla3 t3 ON t1.id = t3.id;
Bibliografía [Contenidos semana 6, Fundamentos de bases de datos, IACC 2018.]