Una corrección sobre tu script:
Código SQL:
Ver originalDROP SCHEMA IF EXISTS Piezas_y_Proovedores;
CREATE SCHEMA IF NOT EXISTS Piezas_y_Proovedores;
USE Piezas_y_Proovedores;
DROP TABLE IF EXISTS suministra;
DROP TABLE IF EXISTS proveedores;
DROP TABLE IF EXISTS piezas;
CREATE TABLE IF NOT EXISTS PIEZAS (
codigo INT PRIMARY KEY,
nombre VARCHAR(100)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS proveedores (
id CHAR(4) PRIMARY KEY,
nombre VARCHAR(100)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS SUMINISTRA (
codigo_de_la_pieza INT,
id_Proovedor CHAR(4),
precio INT,
PRIMARY KEY (codigo_de_la_pieza , id_Proovedor),
FOREIGN KEY (codigo_de_la_pieza)
REFERENCES PIEZAS (codigo),
FOREIGN KEY (id_Proovedor)
REFERENCES proveedores (id)
);
INSERT INTO PIEZAS
(codigo,nombre)
VALUES (1,'Tornillos'),
(2,'Cinta'),
(3,'Arandelas'),
(4,'Destornillador'),
(5,'Taladro');
INSERT INTO proveedores
(id,nombre)
VALUES ('SQL','Unilever'),
('RAT','TiendaLeon'),
('LAB','ProTools'),
('DER','MegaTools'),
('LOV','UltraTools');
INSERT INTO SUMINISTRA
(codigo_de_la_pieza,id_Proovedor,precio)
VALUES (1,'SQL',300),
(2,'RAT',200),
(3,'LAB',500),
(4,'DER',350),
(5,'LOV',600);
/*3.1 OBTENER LOS NOMBRES DE TODAS LAS PIEZAS*/
SELECT
P.nombre
FROM
PIEZAS P;
/*3.2 OBTENER TODOS LOS DATOS DE TODOS LOS PROOVEDORES*/
SELECT
*
FROM
proveedores;
/*3.3 OBTENER EL PRECIO MEDIO AL QUE SE NOS SUMINISTRAN LAS PIEZAS*/
SELECT
AVG(precio)
FROM
SUMINISTRA;
/*3.4 OBTENER LOS NOMBRES DE LOS PROOVEDORES QUE SUMINISTRAN LA PIEZA 1*/
SELECT
P.nombre
FROM
proveedores P
INNER JOIN
SUMINISTRA s ON P.id = s.id_Proovedor
INNER JOIN
PIEZAS pi ON s.codigo_de_la_pieza = pi.codigo
WHERE
s.codigo_de_la_pieza = 1;
/*3.5 OBTENER LOS NOMBRES DE LAS PIEZAS SUMINISTRADAS POR EL PROVEEDOR CUYO CODIGO ES SQL*/
SELECT
P.nombre
FROM
PIEZAS P
INNER JOIN
SUMINISTRA S ON p.codigo = s.codigo_de_la_pieza
WHERE
s.id_Proovedor = 'SQL';
/*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.*/
SELECT
p1.nombre, ps1.nombre, precio
FROM
PIEZAS p1
INNER JOIN
(SUMINISTRA s1
INNER JOIN proveedores ps1 ON s1.id_Proovedor = ps1.id) ON p1.codigo = s1.codigo_de_la_pieza
WHERE
precio IN (SELECT
MAX(precio)
FROM
SUMINISTRA s2
GROUP BY s2.codigo_de_la_pieza
HAVING s2.codigo_de_la_pieza = p1.codigo);
/*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.*/
INSERT INTO SUMINISTRA
VALUES (1,'LPS',007);
/*3.8 AUMENTAR LOS PRECIOS EN UNA UNIDAD*/
UPDATE SUMINISTRA
SET
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 originalINSERT INTO proveedores
(id,nombre)
VALUES ('LPS','LA PERSEVERANCIA SUPPLIES');
INSERT INTO SUMINISTRA
VALUES (1,'LPS',007);