sábado, 1 de marzo de 2008

Obtener los números de los proyectos a los cuales suministra partes por lo menos un proveedor situado en una ciudad distinta.

Select Distinct J.J #
From SPJ , S, J
Where SPJ.S# = S.S#
And SPJ.J# = J.J#
And S.ciudad<> J.ciudad;

Algebra: ((( J rename ciudad as jciudad) join SPJ join (s rename ciudad as sciudad)) where jciudad<>sciaudad) [j#]

Obtener los números de partes suministradas a un proyecto por un proveedor situado en la misma ciudad que el proyecto

Select Distinct P #
From SPJ , S, J
Where SPJ.S# = S.S#
And SPJ.J# = J.J#
And S.ciudad= J.ciudad;
Algebra: (J Join SPJ Join S) [P#]

Obtener los números de las partes suministradas a todos los proyectos de Londres.

Selec P#
From SPJ SPJX
Where not exists (select *
From J
Where ciudad=’Londres’
And not exists (select *
From SPJ SPJY
Where SPJY.P# = SPJX.P#
And SPJY.J = J.J#));

Obtener los números de los proyectos a los cuales no suministra ninguna parte roja ninguno de los proveedores de Londres.

Select J#
From J
Where not exists (select *
From SPJ
Where J# = J.J#
And P# in (select P#
From P
Where color =’rojo’)
And S# in (select S#
From S
Where ciudad =’Londres’));

Obtener los códigos de los proyectos a los cuales suministren partes todos y cada uno de los proveedores que suministren alguna parte roja.

Select Distinct J#
from SPJ, SPJX
where not exists (select *
from SPJ SPJY
where exists (select *
from SPJ SPJA
where SPJA.S# = SPJY.S#
and SPJA.P# in (select P#
from P
where color = ‘Rojo’)
and not exists (select *
from SPJ SPJB
where SPJB.S# = SPJY.S#
and SPJB.J# = SPJX.J#)));

Obtener los números de los proveedores que suministren por lo menos una de las partes suministradas por al menos uno de los proveedores que suministra

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)


Select Distinct S#
From SPJ
Where P# in (select P#
From SPJ
Where S# in (Select S#
From SPJ
Where P# in (Select P#
From P
Where COLOR = ‘Rojo’)));

Algebra: ((( SPJ Join (P where Color = “Rojo” ) [P#]) [S#] join SPJ) [P#] join SPJ) [S#]

Consigue los nombres de los suministradores que no venden a la parte p2.

Select Snombre
From S
Where not exists (Select *
From SPJ
Where S# = S.S#)
And P# = “P2”);

Obtener los códigos de los proveedores que venden al menos todas las partes vendidas por el proveedor S2.

Select distintc S#
From SPJ SPJX
Where not exists (Select *
From SPJ SPJY
Where S# = ‘S2’
And not exists (Select *
From SPJ
Where S# = SPJX.S#
And P# = SPJY.P#));

Algebra: SPJ [S#, P#, J#] divideby (SPJ where S# = ‘S2’) [P#]

Dame todos los nombres de los suministradores que venden todas las partes.

Select Snombre
From S
Where not exists (Select *
From P
Where not exists (Select *
From SPJ
Where S# = S.S#
And P# = P.P#));

Algebra: (SPJ[S#,P#] divided by P[P#] joins S)[Snombre]

Obtener los códigos de parte y el número de ventas de aquellas partes que presentes el mayor número de ventas.

Select P#, count (*)
Fro SPJ
Group By P#
Having count (*) >= all (Select count(*)
From SPJ
Group By P#);

Obtener el código y la cantidad total suministrada de aquellas partes que han sido vendidas a todos los proyectos

Select P#, sum(cantidad)
From SPJ A
Where not exists ( Select *
From J
Where not exists (Select *
From SPJ
Where P# = A.P#
And J# = J.J#));
Group by P#;

¿Cuántas partes han sido vendidas a todos los proveedores residentes en la ciudad en que se fabrica la parte?

Select count (*)
From P
Where not exists (Select *
From S
Where Ciudad =P.Ciudad
And not exists (Select *
From SPJ
Where P#=P.P#
And S#=S.S#));

Obtener los códigos de los proveedores que no venden partes de Londres a ningún proyecto de Londres

Select S#
From S
Where not exists (Select *
From SPJ
Where S# = S.S#
And P# in (select P#
From P
Where ciudad=”Londres”)
And J in (select J#
From J
Where ciudad = “Londres”));

Indique los códigos de los proveedores que venden a un único proyecto.

Select distinct S#
From SPJ X
Where S# not in (select S#
From S
Where X.J#<>J#);

Algebra: SPJ[S#] minus
((SPJ[S#, J#] Join ((SPJ rename J# as Jnum)(S#, Jnum)) where J#<> Jnum) [S#])

Indique los códigos de las partes que vende el proveedor “S1”, pero no las vende en exclusiva.

Select J#
From J
Where J# in (select J#
From SPJ
Where S# = ‘S1’);

Obtener los códigos de los proyectos de los proveedores que venden todas las partes usadas en el proyecto “J1” y solo las partes usadas por el proyect

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

select S#
From S
Where not exists (Select P#
From P
Where exists (select *
From SPJ
Where P# = P.P# and J# = “J1”)
And not exists (select *
From SPJ
Where P# = P.P# and S# = S# = S.S#))
And not exists (Select P#
From P
Where exists (select *
From SPJ
Where P# = P.P# and S# = S.S#)
And not exists (select *
From SPJ
Where P# = P.P# and J# = “J1”));

Algebra: (SPJ where J#<> ‘j1’) [P#] P[P#] minus (SPJ where J# =’j1’) [P#]

Obtener las ciudades donde hay proyectos que usan todas las partes vendidas en exclusiva por el proveedor “S1”

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)


Select distinct Ciudad
From J
Where not exists (select P#
From SPJ A
Where not exixts (select *
From SPJ
Where P# = A.P#
And S#<>”S1”)
And not exists (select *
From SPJ
Where P# = A.P#
And J# = J.J#));

Indique los códigos de las partes que se usan solamente en el proyecto “J1”.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select distinct P#
From SPJ
Where not exists (Select *
From SPJ
Where P# = A.P#
And J#<>”J1”);

Indique las ciudades donde residen suministradores que venden todas las partes.

Select Distinct Ciudad
From S
Where not exists (select *
From P
Where not exists (select *
From SPJ
Where P.P# = P#
And S.S# = S#));

((SPJ[S#,P#] divide by P[#]) join S) [ciudad]

Obtener los códigos de los proyectos para los cuales ‘S1’ es el único suministrador.

Select Distinct J#
from SPJ, SPJX
where not exists (select *
from SPJ SPJY
where SPJY.J## = SPJX.J#
and SPJY.S#<>”S1”);

Algebra: (SPJ where S# = ‘S1’) [J#] minus (SPJ where S# <>‘S1’) [J#]

Indique los códigos de las partes vendidas en exclusiva por el proveedor “S3”

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)


Select Distinct P#
from SPJ, SPJX
where not exists (select *
from SPJ SPJY
where P# = SPJX.P#
and S#<>”S3”);

Obtener los códigos de los proyectos tales que al menos cierta cantidad de cada parte utilizada por ellos le sea suministrada por el proveedor S1.

Select Distinct J#
from SPJ, SPJX
where not exists (select *
from SPJ SPJY
where exists(select *
from SPJ SPJA
where SPJA.P# = SPJY.P#
and SPJ.J# = SPJX.J#)
and not exists (select *
from SPJ SPJB
where SPJB.S# = ‘S1’
and SPJB.P#.= SPJY.P#
and SPJB.J# = SPJX.J#));

Obtener los códigos de los proyectos a los cuales el proveedor S1 suministres todos los tipos de parte suministrados por él.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select Distinct J#
from SPJ, SPJX
where not exists (select P#
from SPJ SPJY
where exists(select *
from SPJ SPJA
where SPJA.S# = ‘S1’
and SPJ.P# = SPJY.P#)
and not exists (select *
from SPJ SPJB
where SPJB.S# = ‘S1’
and SPJB.P#.= SPJY.P#
and SPJB.J# = SPJX.J#));

Obtener los códigos de los proyectos que utilicen solo partes suministradas por el proveedor S1.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)


Select Distinct J#
from SPJ, SPJX
where not exists (select P#
from SPJ SPJY
where SPJY.J# = SPJX.J#
and not exists (select *
from SPJ SPJZ
where SPJZ.P# = SPJY.P#
and SPJZ.S#.= ‘S1’));

Obtener los códigos de los proyectos a los cuales se vendan por lo menos todas las partes suministradas por el proveedor S1.

Select Distinct J#
from SPJ, SPJX
where not exists (select P#
from SPJ SPJY
where SPJY.S# = ‘s1’#
and not exists (select *
from SPJ SPJZ
where SPJZ.P# = SPJY.P#
and SPJ.J# = SPJX.J#));

Algegra: SPJ [J#, P#] divideby (spj where S# = ‘S1’) [P#]

Obtener los códigos de los proyectos donde se utilice al menos una de las partes suministradas por el suministrador ‘S1’.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select distinct J#
From SPJ
Where P# in (select P#
From SPJ
Where S# = ‘S1’);
Algebra: (SPJ Join (SPJ where s# = ‘S1’) [P#]) [J#]

Obtener los códigos de los suministradores que suministran la misma parte a todos los proyectos.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)


Select Distinct S#
From SPJ SPJX
Where exists (select P#
From SPJ SPJY
Where not exists(
Select J#
From J
Where not exists (Select *
From SPJ SPJZ
Where SPJZ.S# = SPJX.S#
And SPJZ.P# = SPJY.P#
And SPJZ.J# = J.J#)));
Algebra: (SPJ [S#, P#, J#] Divide by J[J#]) [S#]

Indique los códigos de los suministradores que venden todas las partes a todos los proyectos.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select S#
From S
Where not exists (select *
From J, P
Where not exists (select *
From SPJ
Where s.s# = s#
And p.p# = p#
And j.j# = SPJ.J#));
Algebra: SPJ[s#,p#,j#] divibedy (p[p#] times j[j#]) [s#]

Obtener los códigos de los proveedores de Londres que han vendido la misma parte a más de 3 proyectos distintos.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select distinct S#
From SPJ
Where S# in (Select S#
From S
Where ciudad = “Londres”)
Group by S#, P#
Having count (*) >3

Seleccionar los códigos de los suministradores que han realizado ventas a algún proyecto que totalizan una cantidad superior a la mitad del total de l

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select distinct s#
From SPJ as A
Group By S#, J#
Having sum (cantidad) > (select sum (cantidad)/2
From SPJ
Where J# = A.J#);

Indique las ciudades en las que se fabrican partes no vendidas o bien residen proveedores que no venden nada.-

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

select ciudad
from p
where not exists (select *
from spj
where p# = p.p#);
union
select ciudad
from s
where not exists (select *
from spj
where s# = s.s#);

Indique las ciudades en las que residen proveedores que venden, al menos, todas las partes fabricadas en la ciudad en la que vive el proveedor.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select distint ciudad
From S
Where not exists (Select *
From P
Where Ciudad =S.Ciudad
And not exists (Select *
From SPJ
Where SN=S.SN
And PN=P.PN));
(SPJ [S#, P#] divide by (P join S) [ciudad]) join [ciudad]

Indique los códigos de las partes usadas en todos los proyectos.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select pn
From p
Where not exists (Select *
From j
Where not exists (select *
From spj
Where pn= p.pn
And jn=j.jn));
((SPJ [J#, P#] divide by J[J#] join S) [P#]

Obtener los códigos de los proyectos para los cuales ‘S1’ es el único proveedor de partes rojas.

Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select J#
From J
Where not exists (Select *
From SPJ
Where J# = J.J#
And S#<>”S1”
And P# in (Select P#
From P#
Where COLOR=”ROJO”));

Indique los códigos de las partes que han sido vendidas por algún proveedor en una cantidad total mayor de 300.

Ejercicios de Algebra y Calculo Relacional.
Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select Distinct P#
From SPJ
Group by P#, S#
Having sum (cantidad) >300;

los códigos de los proyectos que solo usan partes fabricadas en telde.

Ejercicios de Algebra y Calculo Relacional.
Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select Distinct J#
From SPJ A
Where not exists (select *
From SPJ
Where J#=A.J#
And P# in (select P#
from P
where ciudad <> ‘Telde’)); no usan =
SPJ [J#] minus ((SPJ join P) where ciudad <> ‘Telde’) [J#]

Indicar los códigos de los proveedores que solo venden partes fabricadas en su ciudad

Ejercicios de Algebra y Calculo Relacional.
Siempre Trabajando sobre esta Base de Datos:
S(S#, Snombre, Situación, Ciudad)
P(P#, Pnombre, Color, Peso, Ciudad)
J(J#, Jnombre, ciudad)
SPJ(S#,P#,J#, Cantidad)

Select sn
From s
Where not exists (select *
From spj, p
Where spj.pn=p.pn
And sn=s.sn
And ciudad<>s.ciudad);

(s[sn]) minus
((((((s rename ciudad as sciudad)[sn,sciudad]) join (spj[sn,pn])) join (p[pn,ciudad])) where sciudad <>ciudad[sn])