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