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