drop table if exists productos,proveedor,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_productos integer , id_proveedor integer references proveedor, color char(10) , cantidad integer, foreign key (id_productos,color) references productos ); insert into productos values (001,'Verde'), (001,'Rojo'), (002,'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 id_productos, id_proveedor from suministra group by id_productos, id_proveedor having count(*)=(Select count(*) from proveedor); --2 select id_productos, id_proveedor from suministra group by id_productos, id_proveedor having count(*)=(Select count(*) from suministra); --3 select id_productos, id_proveedor from suministra natural join proveedor group by id_productos, id_proveedor having count(*)=(Select count(*) from productos); --4 select id_productos, id_proveedor from suministra natural join proveedor group by id_productos, id_proveedor 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,productos.id,color from proveedor inner join suministra on (id=id_proveedor) group by proveedor.id,nombre,productos.id,color having count(*)=(Select id,color from productos where id=1 ); /* Porque no puede existir un productos con un mismo color en varios proveedores */ --7 select proveedor.id,nombre,productos.id,color from proveedor inner join suministra on (id=id_proveedor) having count(*)=(select id,color from productos);