Sei sulla pagina 1di 3

Regional Distrito Capital

Centro de Gestión de Mercados, Logística y Tecnología de la Fecha:


información
2010
Sistema de
PROGRAMA DE FORMACION :
Gestión de la
Calidad
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION

TALLER DE SUBCONSULTAS EN SQL – PARTE 1

Nombre Aprendiz: MARIA MERCEDES GORDO PINZON


Fecha_____________________

Resuelva los puntos planteados en este taller, tomando como base


el documento Subconsultas.pdf. Al finalizar la sesión de clase
remita el documento, de acuerdo con las indicaciones del
instructor. (1 hora)

SUBCONSULTAS COMO TABLA DERIVADA

Consulta para visualizar el codigo de la orden y el codigo del cliente

USE northwind
SELECT orderid, customerid
FROM orders
GO

LA SUBCONSULTA QUEDARIA

USE northwind
SELECT T.orderid, T.customerid
FROM ( SELECT orderid, customerid
FROM orders ) AS T
GO

1. De acuerdo con su analisis concluya cuál seria el objetivo de


realizar subconsultas como una tabla derivada y en que caso usted la
utilizaria, escriba un ejemplo para hacerlo.

Para dividir una consulta compleja en varios pasos lógicos, para responder
una consulta que depende de los resultados de otra consulta.

Ejemplo

Muestre los campos de id y nombre de la tabla empleados más el promedio


del código de las ventas.

USE EMPRESA

SELECT ID, NOMBRE, VENTAS

FROM EMPLEADOS (SELECT avg(CODIGOVENTAS)promedio FROM


VENTAS)AS VENTAS

GO
Regional Distrito Capital

Centro de Gestión de Mercados, Logística y Tecnología de la Fecha:


información
2010
Sistema de
PROGRAMA DE FORMACION :
Gestión de la
Calidad
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION

SUBCONSULTAS COMO EXPRESION

Se desea visualizar el nombre del producto, precio unitario, precio


promedio de todos los productos y la diferencia que hay entre el
precio promedio y el precio del producto, para los productos que
pertenecen a la categoria 6.

Inicialmente podriamos construir la siguiente sintaxis

USE northwind
select ProductName, UnitPrice, avg (UnitPrice)as precioProm,
unitprice- avg (UnitPrice)as diferencia
from Products
where CategoryID = 6
group by ProductName, UnitPrice
GO

sin embargo, el planteamiento se resuelve de la siguiente manera:

USE northwind
select ProductName, UnitPrice, (select avg(UnitPrice) from Products)
as PrecioPromedio,
UnitPrice -(select AVG(UnitPrice)from Products) as diferencia
from products
where CategoryID = 6
GO

2. Describa con sus propias palabras cual es la diferencia entre las


consultas y por qué deberiamos involucrar una subconsulta para obtener
el resultado deseado.

Se reemplaza el group by por la subconsulta, además en la consulta no se


usa el unitprice de la tabla productos y en la subconsulta usamos el campo
unitprice de la tabla products y con ella realizamos la consulta que se pide y
porque la consulta normal no permite realizar tantas operaciones que estén
por fuera los limites campos de esa tabla y las subconsultas si lo permiten.

SUBCONSULTAS PARA CORRELACIONAR

Se requiere una consulta que muestre el codigo de la orden y el codigo


del cliente, solo para aquellos cuyo producto comprado es el codigo 23
y la cantidad comprada es mayor a 20.

USE northwind
SELECT od.orderid, customerid
FROM orders AS or1 inner join [order details] AS od on
or1.OrderID=od.OrderID
Regional Distrito Capital

Centro de Gestión de Mercados, Logística y Tecnología de la Fecha:


información
2010
Sistema de
PROGRAMA DE FORMACION :
Gestión de la
Calidad
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION

where Quantity > 20 and od.ProductID = 23


GO

LA SUBCONSULTA QUEDARIA

USE northwind
SELECT orderid, customerid
FROM orders AS or1
WHERE 20 < (SELECT quantity FROM [order details] AS od
WHERE or1.orderid = od.orderid AND od.productid = 23)
GO

TAMBIEN FUNCIONARIA ASI:

USE northwind
SELECT orderid, customerid
FROM orders AS or1
WHERE (SELECT quantity FROM [order details] AS od
WHERE or1.orderid = od.orderid AND od.productid = 23)>20
GO

3. En la sub consulta hay una condicion redactada así:

WHERE or1.orderid = od.orderid

Interprétela y con sus propias palabras descrìbala.(¿qué se está


haciendo y cuál es la funcion que cumple dentro de la subconsulta?),
redacte la sintaxis lógica de este tipo de condision y verifique si en
una consulta convencional se puede utilizar de la misma manera.

Está reemplazando el innerjoin de la consulta dentro de la subconsulta


donde la condición es que el campo en común entre las tablas de orders y
orderdetails queda con una condición y en una consulta convencional no me
permite hacer eso ya que esta por fuera de los límites de la tabla.

4. Implemente en alguna de las tres sentencias sql anteriores, la


forma de mostrar; ademas, el codigo del producto y la cantidad
comprada; explique su decisión.

USE northwind

SELECT od.orderid, customerid, Quantity, ProductID

FROM orders AS or1 inner join [order details] AS od on


or1.OrderID=od.OrderID

where Quantity > 20 and od.ProductID = 23

GO

Potrebbero piacerti anche