0% encontró este documento útil (0 votos)
76 vistas

Consultas Con Varias Tablas

Este documento describe los conceptos básicos de las consultas en bases de datos. Explica que las consultas se utilizan para recuperar o modificar datos de una o más tablas mediante la aplicación de filtros. Detalla los diferentes tipos de consultas como de selección, acción y subconsultas. También explica cómo unir tablas relacionadas mediante claves primarias y llaves foráneas utilizando joins y cómo agrupar y resumir datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
76 vistas

Consultas Con Varias Tablas

Este documento describe los conceptos básicos de las consultas en bases de datos. Explica que las consultas se utilizan para recuperar o modificar datos de una o más tablas mediante la aplicación de filtros. Detalla los diferentes tipos de consultas como de selección, acción y subconsultas. También explica cómo unir tablas relacionadas mediante claves primarias y llaves foráneas utilizando joins y cómo agrupar y resumir datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

CONSULTAS

Es un conjunto de órdenes a una Base de Datos que recuperan registros o


realizan una acción específica sobre un conjunto de registros.
Utilizando consultas se puede recuperar datos de uno o más campos, de una o
más tablas. También se puede someter los datos recuperados a una o más
restricciones, conocidas como criterios, que se utilizan para limitar la cantidad
de datos que se recuperan.
Existen consultas de selección, de acción, de referencias cruzadas, de
parámetros, de datos añadidos y especificas de SQL.

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.

Combinar tablas relacionadas en una consulta


Las combinaciones se utilizan para recuperar información relacionada de más
de una tabla. Para crear una combinación en una consulta, debe designarse
las claves principales de las tablas implicadas en la combinación.

Ejemplo:
Crear la base de datos Farmacia con las tablas Producto e Inventario

Categoria: Producto: Inventario:


Cod_Cat Cod_Prod N_Inv
Categoria Cod_Cat Cod_Prod
Producto Pre_compra
Marca Pre_venta
Unidad
Stock

La tabla Producto almacena información acerca del producto, y la tabla


inventario almacena información de los precios, fecha de vencimiento y stock,
es decir de los lotes de los productos

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


Si se quiere visualizar el producto y su marca, así como los precios podemos
utilizar la sintaxis completa que es utilizando Nombretabla.nombrecampo
como se muestra a continuación:
SELECT Producto.Producto, Producto.Marca, Inventario.Pre_compra,
Inventario.Pre_venta
FROM Producto, Inventario
WHERE Producto.Cod_Prod = Inventario.Cod_Prod

O la sintaxis abreviada:

SELECT Producto, Marca, Pre_compra, Pre_venta


FROM Producto, Inventario
WHERE Producto.Cod_Prod = Inventario.Cod_Prod

Si se quiere visualizar el nombre de la categoría, el producto, la marca y su


stock, tenemos que usar la siguiente sentencia:

SELECT Categoria, Producto, Marca, Stock


FROM Categoria, Producto, Inventario
WHERE Categoria.Cod_Cat= Producto.Cod_Cat AND
Producto.Cod_Prod = Inventario.Cod_Prod

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.

SELECT Producto.Producto, Producto.Marca, Inventario.Pre_compra,


Inventario.Pre_venta
FROM Producto INNER JOIN Inventario
ON Producto.Cod_Prod = Inventario.Cod_Prod

O puede utilizar la forma simplificada:

SELECT Producto, Nombre, Pre_compra, Pre_venta


FROM Producto INNER JOIN Inventario
ON Producto.Cod_Prod = Inventario.Cod_Prod

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


SELECT Categoria,Producto, Marca, Stock
FROM Categoria, Producto, Inventario,
Categorias INNER JOIN Producto ON Categoria.Cod_Cat=
Producto.Cod_Cat, Producto INNER JOIN Inventario Producto.Cod_Prod
= Inventario.Cod_Prod
Se pueden anidar instrucciones JOIN utilizando la siguiente sintaxis:
    SELECT campos
    FROM tb1 INNER JOIN
    (tb2 INNER JOIN [( ]tb3
    [INNER JOIN [( ]tablax [INNER JOIN ...)]
    ON tb3.campo3 comp tbx.campox)]
    ON tb2.campo2 comp tb3.campo3)
    ON tb1.campo1 comp tb2.campo2;

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)

Visualizar los productos que no tienen inventario

SELECT *

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


FROM Producto
WHERE Cod_Prod NOT IN ( SELECT Cod_Prod FROM Inventario)

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


SQL CON MAS DE UNA TABLA

Diseñar una base de datos con 3 tablas las cuales van a estar relacionadas por el campo
Cod_Emp

Tabla Campo Tipo

Dpto Cod_Dpto Texto


Dpto Departamento Texto

Empleado Cod_Emp Texto


Empleado Nombres Texto
Empleado Apellidos Texto
Empleado Edad Numérico
Empleado Salario Numérico
Empleado Cod_Dpto Texto

Cliente Cod_Cliente Texto


Cliente Nombres Texto
Cliente Apellidos Texto
Cliente Ciudad Texto
Cliente Cod_Emp Texto

Seleccionar apellidos del empleado, salario y el departamento al que pertenece


ordenado por departamento.

select Empleado.Apellidos, Empleado.Salario, Dpto.Departamento


from Dpto, Empleado
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
order by Departamento

Seleccionar los nombres y apellidos del empleado, el departamento y su salario


ordenado por el salario descendentemente.

select Nombres, Apellidos, Departamento, Salario


from Dpto, Empleado
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
order by Salario Desc

Seleccionar el código del empleado, los nombres y apellidos del empleado,


departamento y el nombre y apellidos de los clientes que tiene y la ciudad a la que
pertenece el cliente

select Empleado.Cod_Emp, Empleado.Nombres, Empleado.Apellidos,


Departamento, Cliente.Nombres, Cliente.Apellidos, Ciudad
from Dpto, Empleado, Cliente
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
and Empleado.Cod_Emp = Cliente.Cod_Emp

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


Seleccionar el código, apellidos, departamento y edad de los empleados, además de los
nombres y apellidos de sus clientes, pero solo de los empleados cuya edad es menor
que 29

select Empleado.Cod_Emp, Empleado.Apellidos, Departamento, Edad,


Nombres, Cliente.Apellidos
from Dpto, Empleado, Cliente
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
and Empleado.Cod_Emp = Cliente.Cod_Emp
and Edad < 29

Seleccionar el código del empleado, nombres , apellidos y ciudad de sus clientes cuya
ciudad empiece con la letra B

select Empleado.Cod_Emp, Cliente.Apellidos, Cliente.Nombres, Ciudad


from Empleado, Cliente
where Empleado.Cod_Emp = Cliente.Cod_Emp
and Ciudad Like ‘B*’

SQL CON SUB QUERYS

Visualizar los nombres y apellidos de los empleados que tienen clientes


select Nombres, Apellidos
from Empleado
where Empleado.Cod_Emp IN ( SELECT Cod_Emp FROM Cliente )

Visualizar los nombres y apellidos de los empleados que no tienen clientes


select Nombres, Apellidos
from Empleado
where Empleado.Cod_Emp NOT IN ( SELECT Cod_Emp FROM Cliente )

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

SQL CON MAS DE UNA TABLA Y AGRUPACIONES

Suma de salarios por departamento

select Departamento, SUM(salario) AS suma_salario


from Dpto, Empleado
where Dpto.Cod_Dpto = Empleado.Cod_Dpto
group by Departamento

Cantidad de clientes por cada empleado

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza


select Empleado.Cod_Emp As Código_Emp, COUNT (Cliente.Cod_Emp) AS
Nº_Clientes
from Empleado, Cliente
where Empleado.Cod_Emp = Cliente.Cod_Emp
group by Empleado.Cod_Emp

Suma de salarios, máximo, mínimo, promedio por departamento

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

Escuela de Ingeniería de Sistemas e Informática Ing. Ana Doris M. Barrera Loza

También podría gustarte