Consultas Con Varias Tablas
Consultas Con Varias Tablas
CONSULTA DE SELECCIÓN
Este tipo de consulta obtiene los datos de una o más tablas y muestra los
resultados en una hoja de datos en donde se pueden actualizar los registros.
También se utiliza para agrupar registros para poder calcular sumas,
promedios y hallar totales.
Ejemplo:
Crear la base de datos Farmacia con las tablas Producto e Inventario
O la sintaxis abreviada:
Esta sentencia nos va a permitir visualizar dichos datos pero no nos permite
actualizarlos.
INNER JOIN
Para poder actualizar el conjunto de resultados, se reemplaza a la sentencia
WHERE por INNER JOIN. Se utiliza para generar una vista que contenga solo
aquellos registros que tengan una correspondencia exacta en ambas tablas.
Si empleamos la cláusula INNER en la consulta se seleccionarán sólo aquellos
registros de la tabla de la que hayamos escrito a la izquierda de INNER JOIN
que contengan al menos un registro de la tabla que hayamos escrito a la
derecha.
Se puede utilizar INNER JOIN con las tablas Categoria y Producto para
seleccionar todos los productos de cada categoria.
Pero si se quiere seleccionar todos las categorias (incluso si alguna de ellas no
tiene ningún producto) se emplea LEFT JOIN, o todos los productos (incluso si
alguno no está asignado a ninguna categoria), en este caso RIGHT JOIN.
LEFT toma todos los registros de la tabla de la izquierda aunque no tengan
ningún registro en la tabla de la derecha. RIGHT realiza la misma operación
pero al contrario, toma todos los registros de la tabla de la derecha aunque no
tenga ningún registro en la tabla de la izquierda.
SUBCONSULTAS
Este tipo de consulta consta de una instrucción SQL SELECT dentro de otra
consulta de selección o consulta de acción. Es una consulta cuyo resultado se
utiliza como criterio de otra consulta. Las subconsultas se hacen normalmente
dentro de las expresiones WHERE.
Ejemplo:
Visualizar los datos de los productos cuyo precio de compra sea mayor que el
promedio de precio de compra de todos los productos de la tabla.
SELECT *
FROM Inventario
WHERE Pre_compra > (SELECT AVG(Pre_compra) FROM Inventario)
SELECT *
Diseñar una base de datos con 3 tablas las cuales van a estar relacionadas por el campo
Cod_Emp
Seleccionar el código del empleado, nombres , apellidos y ciudad de sus clientes cuya
ciudad empiece con la letra B
Visualizar los nombres de los empleados cuyo salario es igual o mayor que el salario
medio de todos los empleados.
SELECT Apellido, Nombres FROM Empleados
WHERE Salario >= (SELECT Avg(Salario) FROM Empleados
select Dpto.Departamento,
SUM(salario) AS suma_salario,
MAX(salario) AS max_salario,
MIN(salario) AS min_salario,
AVG(salario) AS Prom_salario
from Dpto, Empleado
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
group by Dpto.Departamento