You are on page 1of 4

TALLER DE SUBCONSULTAS EN SQL – PARTE 1

Nombre Aprendiz: Astrid Cárdenas Peñarete 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.

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.

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

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.
SOLUCIÓN

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.

Según mi punto de vista el objetivo de las Subconsultas es ver el paso


a paso de lo que se esta haciendo.
Son utilies cuando una consulta depende del resultado de otra consulta.

SELECT Clientes. Compañía, Clientes.Teléfono


FROM Clientes
WHERE EXISTS (SELECT * FROM Pedidos
WHERE Pedidos.IdPedido = Clientes.IdCliente)

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.

Derivada: Esta es usada para hacer una subconsulta en la clausula


From.

Expresión: Es usada con la clausulas Where.

Correlacionada: Hace un subconsulta por cada fila de la consulta


externa.

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.

Esta clausulas nos está imponiendo la condición de que los datos de


orderid deben ser iguales en las dos tablas. Y si no se cumple no se
puede mostrar ningún resultado.

Where od. ProductID = p. ProductID


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, ProductID, Quantity
FROM orders AS or1 inner join [order details] AS od on
or1.OrderID=od.OrderID
where Quantity > 20 and od.ProductID = 23
GO