drop table if exists productos,proveedores,suministra cascade; create table productos( id integer , color char(10), primary key(id,color) ); create table proveedor( id integer primary key, nombre char(20) ); create table suministra( id integer primary key, id_producto integer references productos, id_proveedor integer references proveedor, color char(10) references productos, cantidad integer ); insert into productos values (001,'Rosa'), (001,'Verde'), (002,'Rojo'); insert into proveedor values (001,'Paco-Regalos'), (002,'Carlos&Cia'), (003,'Chinatown'); insert into suministra values (1,001,001,'Verde'), (2,001,002,'Rojo'), (3,002,001,'Verde'), (4,002,001,'Rojo'); --Ejercicio 4 --1 select producto.id, proveedor.id from suministra group by producto.id,proveedor.id having count(*)=(Select count(*) from proveedores); --2 select producto.id, proveedor.id from suministra group by producto.id,proveedor.id having count(*)=(Select count(*) from suministra); --3 select proveedor.id, producto.id from suministra natural join proveedores group by producto.id,proveedor.id having count(*)=(Select count(*) from productos); --4 select proveedor.id, producto.id from suministra natural join proveedores group by producto.id,proveedor.id having count(*)=(Select count(*) from productos where color='Rojo'); --5 select id,color from productos group by id,color having count(*)=(Select count(*) from productos); --6 select proveedor.id,nombre,producto.id,color from proveedor inner join suministra on (id=id_proveedor) group by proveedor.id,nombre,producto.id,color having count(*)=(Select id,color from productos where id=1 ); /* Porque no puede existir un producto con un mismo color en varios proveedores */ --7 select proveedor.id,nombre,producto.id,color from proveedor inner join suministra on (id=id_proveedor) having count(*)=(select id,color from productos);