ejercicios de bd desarrollado

19
BD 2006/2007 Álgebra relacional y SQL 7/12 14. Repetir el ejercicio anterior pero sin recuperar las ternas en los que los dos valoresde ciudad sean los mismos. 15. Obtener el número de suministros, el de artículos distintos suministrados y lacantidad total de artículos suministrados por el proveedor P2. Articulo_ciudad (p#, c#, ciudada) p#,c#,ciudad (Envíos * Artículos) ciudad, c#, ciudada( Proveedores * Articulo_ciudad ) SELECT p.ciudad ,e.c#, a.ciudad FROM envios e, proveedores p , artículos aWHERE e.p#=p.p# AND e.t#=a.t#;SELECT p.ciudad ,e.c#, a.ciudad FROM proveedores p JOIN (envios e NATURAL JOIN artículos a) ON p.p#=e.p#; CIUDAD C# CIUDAD SEVILLA C1 MADRIDSEVILLA C1 CACERESMADRID C3 MADRIDMADRID C3 MALAGAMADRID C3 CACERESMADRID C3 CACERESMADRID C3 SEVILLAMADRID C3 BARCELONAMADRID C3 SEVILLAMADRID C5 MALAGASEVILLA C3 MADRIDSEVILLA C4 MALAGASEVILLA C6 CACERESSEVILLA C6

Upload: anon45708786

Post on 11-Dec-2015

15 views

Category:

Documents


4 download

DESCRIPTION

ejercicios desarrollados en c# con lenguaje sql para ejercicios aplicados en universidad y escuelas

TRANSCRIPT

Page 1: ejercicios  de bd desarrollado

  BD 2006/2007 Álgebra relacional y SQL7/12 14. Repetir el ejercicio anterior pero sin recuperar las ternas en los que los dos valoresde ciudad sean los mismos.15. Obtener el número de suministros, el de artículos distintos suministrados y lacantidad total de artículos suministrados por el proveedor P2.Articulo_ciudad (p#, c#, ciudada) p#,c#,ciudad (Envíos * Artículos) ciudad, c#, ciudada( Proveedores * Articulo_ciudad ) SELECT p.ciudad ,e.c#, a.ciudad FROM envios e, proveedores p , artículos aWHERE e.p#=p.p# AND e.t#=a.t#;SELECT p.ciudad ,e.c#, a.ciudad FROM proveedores p JOIN (envios e NATURAL JOIN artículos a) ON p.p#=e.p#;CIUDAD C# CIUDADSEVILLA C1 MADRIDSEVILLA C1 CACERESMADRID C3 MADRIDMADRID C3 MALAGAMADRID C3 CACERESMADRID C3 CACERESMADRID C3 SEVILLAMADRID C3 BARCELONAMADRID C3 SEVILLAMADRID C5 MALAGASEVILLA C3 MADRIDSEVILLA C4 MALAGASEVILLA C6 CACERESSEVILLA C6 SEVILLACACERES C2 MALAGACACERES C2 CACERESCACERES C5 CACERESCACERES C5 SEVILLACACERES C6 MALAGACACERES C1 CACERESCACERES C3 CACERESCACERES C4 CACERESCACERES C5 SEVILLAArticulo_ciudad (p#, c#, ciudada) p#,c#,ciudad (Envíos * Artículos) 

Page 2: ejercicios  de bd desarrollado

ciudad, c#, ciudada(ciudad<> ciudada (Proveedores * Articulo_ciudad )) SELECT p.ciudad ,c#, a.ciudad FROM envios e, proveedores p , articulos aWHERE e.p#=p.p# ANDe.t#=a.t# AND p.ciudad <> a.ciudad;SELECT p.ciudad ,e.c#, a.ciudad FROM proveedores p JOIN (envios e NATURAL JOINartículos a) ON p.p#=e.p# and p.ciudad <>a.ciudad;CIUDAD C# CIUDADSEVILLA C1 MADRIDSEVILLA C1 CACERESMADRID C3 MALAGAMADRID C3 CACERESMADRID C3 CACERESMADRID C3 SEVILLAMADRID C3 BARCELONAMADRID C3 SEVILLAMADRID C5 MALAGASEVILLA C3 MADRIDSEVILLA C4 MALAGASEVILLA C6 CACERESCACERES C2 MALAGACACERES C5 SEVILLACACERES C6 MALAGA

Page 3: ejercicios  de bd desarrollado
Page 4: ejercicios  de bd desarrollado

  BD 2006/2007 Álgebra relacional y SQL8/12 16. Para cada artículo y componente suministrado obtener los valores deC#, T# y lacantidad total correspondiente.17. Obtener los valores deT# de los artículos abastecidos al menos por un proveedorque no viva en MADRID y que no esté en la misma ciudad en la que se monta elartículo.(( ) Count(*) Número de Suministros

Page 5: ejercicios  de bd desarrollado

 Count(Distinct t#) Artículos Suministrados Sum(Cantidad) Total Artículos Suministrados(  p#='P2'( Envíos ) )) SELECT COUNT(*) Número de Suministros,COUNT (DISTINCT t#) Artículos Suministrados,SUM(cantidad) Total Artículos Suministrados FROM enviosWHERE p#='P2';Número deSuministrosArtículosSuministradosTotal ArtículosSuministrados8 7 3200( c#, t# ) Sum(Cantidad) Total (Envíos) SELECT c#,t#, SUM(cantidad) Total FROM enviosGROUP BY c#,t#;C# T# TotalC1 T1 200C1 T4 800C2 T2 200C2 T4 100C3 T1 600C3 T2 200C3 T3 200C3 T4 700C3 T5 600C3 T6 400C3 T7 800C4 T2 500C4 T4 800C5 T2 100C5 T4 500C5 T5 400C5 T7 100C6 T2 200C6 T3 300C6 T4 500Prov_no_Madrid (p#, ciudadp)  p#, ciudad (ciudad<>'MADRID' (Proveedores))t#( (ciudad <> ciudadp) ( Artículos * (Envíos * Prov_no_Madrid ))) SELECT DISTINCT e.t# FROM envios e,articulos aWHERE e.t# = a.t# AND EXISTS(SELECT * FROM proveedores pWHERE p.ciudad!= a.ciudad AND p.p# = e.p# AND p.ciudad!='MADRID' );T#

Page 6: ejercicios  de bd desarrollado

T1T2T3T4T5T7

Page 7: ejercicios  de bd desarrollado

  BD 2006/2007 Álgebra relacional y SQL9/12 18.

Page 8: ejercicios  de bd desarrollado

 Obtener los valores de P# para los proveedores que suministran al menos uncomponente suministrado al menos por un proveedor que suministra al menos uncomponente ROJO.19. Obtener los identificadores de artículos, T#, para los que se ha suministrado algúncomponente del que se haya suministrado una media superior a 320 artículos.20. Seleccionar los identificadores de proveedores que hayan realizado algún envío conCantidad mayor que la media de los envíos realizados para el componente a quecorresponda dicho envío.21. Seleccionar los identificadores de componentes suministrados para el artículo 'T2'por el proveedor 'P2'. p#(Envios * (c#(Envíos * ( p#(Envíos * (Color='ROJO' (Componentes))))))) SELECT distinct p# FROM enviosWHERE c# IN(SELECT c# FROM enviosWHERE p# IN( SELECT p# FROM envios NATURAL JOIN componentesWHERE color='ROJO') );P#P1P2P3P4P5t#( Envios * ( c#( A > 320(

Page 9: ejercicios  de bd desarrollado

 (c#) AVG(cantidad) A (Envíos) ) ) ) ) SELECT DISTINCT t# FROM enviosWHERE c# IN ( SELECT c# FROM enviosGROUP BY c# HAVING AVG(cantidad) > 320 );T#T1T2T3T4T5T6 p#( (Cantidad > A)(Envíos * ( (c#) AVG(cantidad) A (Envíos) ) )) SELECT distinct p# FROM envios aWHERE cantidad > (SELECT AVG(cantidad) FROM envios bWHERE b.c#=a.c# );P#P1P2P5c#(t#='T2' AND p#='P2'(Envíos)) Nótese que es un error grave dar como solución la expresión:c#(t#='T2'(Envíos)) c#( p#='P2'(Envíos)) SELECT c# FROM enviosWHERE t# = 'T2' AND p# = 'P2';C#

Page 10: ejercicios  de bd desarrollado

C3C5

  BD 2006/2007 Álgebra relacional y SQL10/12 22. Seleccionar todos los datos de los envíos realizados de componentes cuyo color nosea 'ROJO'.23. 

Page 11: ejercicios  de bd desarrollado

Seleccionar los identificadores de componentes que se suministren para los artículos'T1' y 'T2'.24. Seleccionar el identificador de proveedor y el número de envíos de componentes decolor 'ROJO' llevados a cabo por cada proveedor.25. Seleccionar los colores de componentes suministrados por el proveedor 'P1'.Envíos.* (Envíos* ( Color <> 'ROJO'(Componentes)) ) SELECT e.* FROM envios e, componentes cWHERE e.c# = c.c# AND color <> 'ROJO';SELECT e.* FROM envios e NATURAL JOIN componentesWHERE color <> 'ROJO';P# C# T# CANTIDADP5 C2 T2 200P5 C2 T4 100P2 C3 T1 400P3 C3 T1 200P2 C3 T2 200P2 C3 T3 200P2 C3 T4 500P5 C3 T4 200P2 C3 T5 600P2 C3 T6 400P2 C3 T7 800P2 C5 T2 100P5 C5 T4 500P5 C5 T5 400(c#(t#='T1'(Envíos)) ) (c#(t#='T2'(Envíos)) Nótese que es un error grave dar como solución:c#(t#='T1' AND t#='T2'(Envíos)) SELECT c# FROM enviosWHERE t# ='T1' INTERSECTSELECT c# FROM enviosWHERE t# ='T2';C#C3

Page 12: ejercicios  de bd desarrollado

(p#) COUNT(*)A ( Envíos *( Color = 'ROJO'(Componentes)) ) SELECT p#, count(*) A FROM enviosWHERE c# IN ( SELECT c# FROM componentesWHERE color = 'ROJO')GROUP BY p# ;P# AP1 2P3 1P4 2P5 4color(Componentes * ( p# = 'P1'(Envíos)) ) SELECT DISTINCT color FROM componentesWHERE c# IN ( SELECT DISTINCT c# FROM enviosWHERE p# = 'P1');COLORROJO

Page 13: ejercicios  de bd desarrollado
Page 14: ejercicios  de bd desarrollado

  BD 2006/2007 Álgebra relacional y SQL11/12 26. Seleccionar los datos de envío y nombre de ciudad de aquellos envíos que cumplanque el artículo, proveedor y componente son de la misma ciudad.27. Seleccionar los nombres de los componentes que son suministrados en una cantidadtotal superior a 500.28. 

Page 15: ejercicios  de bd desarrollado

Seleccionar los identificadores de proveedores que residan en Sevilla y nosuministren más de dos artículos distintos.Puede parecer que la sentencia SQL es muy diferente de la expresión algebraica relacional. En realidad sonequivalentes aplicando la siguiente propiedad del álgebra de conjuntos: A - B = A B (dondeB representa elcomplementario de B).c#, t#, p#, cantidad, ciudad(Artículos * ( Proveedores *( Envíos * Componentes))) Nota: como no se indica nada en *, el join con proveedor se realiza por p# y ciudad; el join con artículo por el t# yciudadSELECT e.*, c.ciudad FROM envios e, componentes c,articulos a, proveedores pWHERE e.t# = a.t# AND e.c# = c.c# ANDe.p# = p.p# AND p.ciudad=c.ciudad AND p.ciudad = a.ciudad;SELECT e.*, .ciudad FROM articulos NATURAL JOIN( proveedores NATURAL JOIN(envios e NATURAL JOIN componentes));P# C# T# CANTIDAD C.CIUDADP4 C6 T7 300 Sevillacnombre(Componentes * ( (S > 500)( (c#) SUM(cantidad) S ( Envíos)) ) ) SELECT DISTINCT cnombre FROM componentesWHERE c# IN ( SELECT c# FROM enviosGROUP BY c# HAVING SUM(cantidad)> 500);CNOMBREC30C4BVT8X3A p#(

Page 16: ejercicios  de bd desarrollado

ciudad='SEVILLA' (Proveedores))  p#( (c <= 2)( (p#) COUNT(DISTINCT t#) C ( Envíos) ) ) (SELECT p# FROM proveedoresWHERE ciudad='SEVILLA')MINUS(SELECT p# FROM enviosGROUP BY p# HAVING COUNT(DISTINCT t#) > 2);P#P1P3P4

Job Board