Ver Mensaje Individual
  #14 (permalink)  
Antiguo 21/11/2014, 11:26
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Por favor Ayud_a con consultas en mysql ?

Una corrección sobre tu script:
Código SQL:
Ver original
  1. DROP SCHEMA IF EXISTS Piezas_y_Proovedores;
  2. CREATE SCHEMA IF NOT EXISTS Piezas_y_Proovedores;
  3. USE Piezas_y_Proovedores;
  4.  
  5. DROP TABLE IF EXISTS suministra;
  6. DROP TABLE IF EXISTS proveedores;
  7. DROP TABLE IF EXISTS piezas;
  8.  
  9. CREATE TABLE IF NOT EXISTS PIEZAS (
  10.     codigo INT PRIMARY KEY,
  11.     nombre VARCHAR(100)
  12. )  ENGINE=INNODB;
  13.  
  14. CREATE TABLE IF NOT EXISTS proveedores (
  15.     id CHAR(4) PRIMARY KEY,
  16.     nombre VARCHAR(100)
  17. )  ENGINE=INNODB;
  18.  
  19. CREATE TABLE IF NOT EXISTS SUMINISTRA (
  20.     codigo_de_la_pieza INT,
  21.     id_Proovedor CHAR(4),
  22.     precio INT,
  23.     PRIMARY KEY (codigo_de_la_pieza , id_Proovedor),
  24.     FOREIGN KEY (codigo_de_la_pieza)
  25.         REFERENCES PIEZAS (codigo),
  26.     FOREIGN KEY (id_Proovedor)
  27.         REFERENCES proveedores (id)
  28. );
  29.  
  30. INSERT INTO PIEZAS
  31. (codigo,nombre)
  32. VALUES (1,'Tornillos'),
  33.        (2,'Cinta'),
  34.        (3,'Arandelas'),
  35.        (4,'Destornillador'),
  36.        (5,'Taladro');
  37.  
  38. INSERT INTO proveedores
  39. (id,nombre)
  40. VALUES ('SQL','Unilever'),
  41.        ('RAT','TiendaLeon'),
  42.        ('LAB','ProTools'),
  43.        ('DER','MegaTools'),
  44.        ('LOV','UltraTools');
  45.  
  46. INSERT INTO SUMINISTRA
  47. (codigo_de_la_pieza,id_Proovedor,precio)
  48. VALUES (1,'SQL',300),
  49.        (2,'RAT',200),
  50.        (3,'LAB',500),
  51.        (4,'DER',350),
  52.        (5,'LOV',600);
  53.  
  54. /*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
  55.  
  56. SELECT
  57.     P.nombre
  58. FROM
  59.     PIEZAS P;
  60.  
  61. /*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
  62.  
  63. SELECT
  64.     *
  65. FROM
  66.     proveedores;
  67.  
  68. /*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
  69.  
  70. SELECT
  71.     AVG(precio)
  72. FROM
  73.     SUMINISTRA;
  74.  
  75. /*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
  76.  
  77. SELECT
  78.     P.nombre
  79. FROM
  80.     proveedores P
  81.         INNER JOIN
  82.     SUMINISTRA s ON P.id = s.id_Proovedor
  83.         INNER JOIN
  84.     PIEZAS pi ON s.codigo_de_la_pieza = pi.codigo
  85. WHERE
  86.     s.codigo_de_la_pieza = 1;
  87.  
  88. /*3.5 OBTENER LOS NOMBRES DE LAS PIEZAS SUMINISTRADAS POR EL PROVEEDOR CUYO CODIGO ES SQL*/
  89.  
  90. SELECT
  91.     P.nombre
  92. FROM
  93.     PIEZAS P
  94.         INNER JOIN
  95.     SUMINISTRA S ON p.codigo = s.codigo_de_la_pieza
  96. WHERE
  97.     s.id_Proovedor = 'SQL';
  98.  
  99. /*3.6 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LAS PIEZAS MAS CARAS, INDICANDO EL NOMBRE DE LA PIEZA Y EL PRECIO AL QUE SUMINISTRAN.*/
  100.  
  101. SELECT
  102.     p1.nombre, ps1.nombre, precio
  103. FROM
  104.     PIEZAS p1
  105.         INNER JOIN
  106.     (SUMINISTRA s1
  107.     INNER JOIN proveedores ps1 ON s1.id_Proovedor = ps1.id) ON p1.codigo = s1.codigo_de_la_pieza
  108. WHERE
  109.     precio IN (SELECT
  110.             MAX(precio)
  111.         FROM
  112.             SUMINISTRA s2
  113.         GROUP BY s2.codigo_de_la_pieza
  114.         HAVING s2.codigo_de_la_pieza = p1.codigo);
  115.  
  116. /*3.7 HACER CONSTAR EN LA BASE DE DATOS QUE LA EMPRESA "LA PERSEVERANCIA SUPPLIES" (CODIGO LPS) VA A EMPEZAR A SUMINISTRARNOS TUERCAS (CODIGO 1) A 7 PESOS CADA TUERCA.*/
  117.  
  118. INSERT INTO SUMINISTRA
  119. VALUES (1,'LPS',007);
  120.  
  121. /*3.8 AUMENTAR LOS PRECIOS EN UNA UNIDAD*/
  122.  
  123. UPDATE SUMINISTRA
  124. SET
  125.     precio = precio + 1;

Nota: tu punto 3.7 falla porque no estás creando el INSERT previo del proveedor en la tabla de proveedores.

Te faltó esto:
Código SQL:
Ver original
  1. INSERT INTO proveedores
  2. (id,nombre)
  3. VALUES ('LPS','LA PERSEVERANCIA SUPPLIES');
  4.  
  5. INSERT INTO SUMINISTRA
  6. VALUES (1,'LPS',007);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 21/11/2014 a las 11:31