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#));