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 docume document nto o Subcon Subconsu sulta ltas.p s.pdf. df. Al final finaliza izarr la sesión sesión de clase clase remi remita ta el doc ocu umen mento, to, de acu acuerdo erdo con las ind indica icacion iones del 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, orderid, customerid FROM orders GO
LA SUBCONSULTA QUEDARIA USE northwind SELECT T.orderid, orderid , T.customerid FROM ( SELECT orderid, orderid, customerid FROM orders ) AS T GO 1. De acuerdo con su analisis concluya cuál seria el objetivo de
realiz realizar ar subcon subconsul sultas tas como como una tabla tabla deriv derivada ada y en usted la utilizaria, escriba un ejemplo para hacerlo.
que caso caso
SUBCONSULTAS COMO EXPRESION Se desea desea visualiz visualizar ar el nombre nombre del producto producto, , precio precio unitario unitario, , precio precio promed promedio io de todos todos los producto productos s y la difere diferenci ncia a que hay entre entre el precio precio promed promedio io y el precio precio del produ producto cto, , para para los produc productos tos que pertenecen a la categoria 6.
Inicialmente podriamos construir la siguiente sintaxis USE northwind select ProductName, ProductName, UnitPrice, UnitPrice, avg unitpriceunitprice- avg (UnitPrice) UnitPrice)as diferencia from Products where CategoryID = 6 group by ProductName, ProductName , UnitPrice GO
(UnitPrice) UnitPrice)as
precioProm, precioProm,
sin embargo, el planteamiento se resuelve de la siguiente manera: USE northwind select ProductName, ProductName, UnitPrice, UnitPrice, (select avg avg( (UnitPrice) UnitPrice) from Products) Products) as PrecioPromedio , UnitPrice -( -(select select AVG AVG( (UnitPrice) UnitPrice)from Products) 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. od.orderid, orderid, customerid FROM orders AS or1 inner join [order [order or1. or1.OrderID= OrderID=od. od.OrderID where Quantity > 20 and od. od.ProductID = 23 GO
detail details] s]
AS
od
on
LA SUBCONSULTA QUEDARIA USE northwind SELECT orderid, orderid, customerid FROM orders AS or1 WHERE 20 < (SELECT quantity FROM [order details] AS od WHERE or1. or1.orderid = od. od.orderid AND od. od.productid = 23) 23) GO
TAMBIEN FUNCIONARIA ASI: USE northwind SELECT orderid, orderid, customerid FROM orders AS or1 WHERE (SELECT quantity FROM [order details] AS od WHERE or1. or1.orderid = od. od.orderid AND od. od.productid = 23)> 23)>20 20 GO
3. En la sub consulta hay una condicion redactada así: WHERE or1. or1.orderid = od. od.orderid
Interp Interprét rétela ela y con sus propia propias s haciendo y cuál es la funcion que redacte la sintaxis lógica de este una consulta convencional se puede
palabr palabras as descrì descrìbal bala.( a.(¿qu ¿qué é se está está cumple dentro de la subconsulta?), tipo de condision y verifique si en utilizar de la misma manera.
4. Implem Implement ente e en alguna alguna de las tres tres senten sentencia cias s sql anteri anteriore ores, s, la form forma a de most mostra rar; r; adem ademas as, , el codi codigo go del del prod produc ucto to y la cant cantid idad ad comprada; explique su decisión.
SOLUCIÓN 1. De acuerd acuerdo o con su analis analisis is conclu concluya ya cuál cuál seria seria el objetiv objetivo o de realiza realizar r subconsultas como una tabla derivada y en que caso usted la utilizaria, escriba un ejemplo para hacerlo. Según mi punto punto de vista el objetivo de las Subconsultas es ver el paso 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 Hace un subcon subconsu sulta lta por cada fila fila de la consul consulta ta externa.
3. En la sub consulta hay una condicion redactada así: WHERE or1. or1.orderid = od. 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. od.orderid, orderid, customerid, ProductID, Quantity FROM orders AS or1 inner join [order [order detail details] s] or1. or1.OrderID= OrderID=od. od.OrderID where Quantity > 20 and od. od.ProductID = 23 GO
AS
od
on