rambo189619

Untitled

Dec 3rd, 2012
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.90 KB | None | 0 0
  1. DROP TABLE IF EXISTS productos,proveedores,suministra cascade;
  2.  
  3. CREATE TABLE productos(
  4.    id       INTEGER ,
  5.    color    CHAR(10),
  6.    PRIMARY KEY(id,color)
  7.    );
  8.    
  9.    CREATE TABLE proveedor(
  10.    id       INTEGER PRIMARY KEY,
  11.    nombre   CHAR(20)
  12.    
  13. );
  14.  
  15. CREATE TABLE suministra(
  16.    id       INTEGER PRIMARY KEY,
  17.    id_producto  INTEGER REFERENCES productos,
  18.    id_proveedor INTEGER REFERENCES proveedor,
  19.    color    CHAR(10) REFERENCES productos,
  20.    cantidad     INTEGER
  21. );
  22. INSERT INTO productos VALUES
  23. (001,'Rosa'),
  24. (001,'Verde'),
  25. (002,'Rojo');
  26.  
  27. INSERT INTO proveedor VALUES
  28. (001,'Paco-Regalos'),
  29. (002,'Carlos&Cia'),
  30. (003,'Chinatown');
  31.  
  32. INSERT INTO suministra VALUES
  33. (1,001,001,'Verde'),
  34. (2,001,002,'Rojo'),
  35. (3,002,001,'Verde'),
  36. (4,002,001,'Rojo');
  37.  
  38. --Ejercicio 4
  39.  
  40. --1
  41. SELECT producto.id, proveedor.id FROM suministra
  42. GROUP BY producto.id,proveedor.id
  43. HAVING COUNT(*)=(SELECT COUNT(*) FROM proveedores);
  44.  
  45. --2
  46. SELECT producto.id, proveedor.id FROM suministra
  47. GROUP BY producto.id,proveedor.id
  48. HAVING COUNT(*)=(SELECT COUNT(*) FROM suministra);
  49.  
  50. --3
  51. SELECT proveedor.id, producto.id FROM suministra NATURAL JOIN proveedores
  52. GROUP BY producto.id,proveedor.id
  53. HAVING COUNT(*)=(SELECT COUNT(*) FROM productos);
  54.  
  55. --4
  56. SELECT proveedor.id, producto.id FROM suministra NATURAL JOIN proveedores
  57. GROUP BY producto.id,proveedor.id
  58. HAVING COUNT(*)=(SELECT COUNT(*) FROM productos
  59.             WHERE color='Rojo');
  60.  
  61. --5
  62. SELECT id,color FROM productos
  63. GROUP BY id,color
  64. HAVING COUNT(*)=(SELECT COUNT(*) FROM productos);
  65.  
  66. --6
  67. SELECT proveedor.id,nombre,producto.id,color
  68. FROM proveedor INNER JOIN suministra ON (id=id_proveedor)
  69. GROUP BY proveedor.id,nombre,producto.id,color
  70. HAVING COUNT(*)=(SELECT id,color
  71.         FROM productos
  72.         WHERE id=1 );
  73.  
  74. /* Porque no puede existir un producto con un mismo color en varios proveedores */
  75.  
  76. --7
  77. SELECT proveedor.id,nombre,producto.id,color
  78. FROM proveedor INNER JOIN suministra ON (id=id_proveedor)
  79. HAVING COUNT(*)=(SELECT id,color FROM productos);
Advertisement
Add Comment
Please, Sign In to add comment