DROP SCHEMA IF EXISTS tp_II;
CREATE SCHEMA tp_II;
USE tp_II;
SET foreign_key_checks=0;
CREATE TABLE equipo (
cod_equipo INT NOT NULL,
nombre VARCHAR(50) NOT NULL,
puntaje INT NOT NULL,
PRIMARY KEY(cod_equipo)
);
CREATE TABLE equipo_encuentro (
id_encuentro INT NOT NULL,
cod_equipo INT NOT NULL,
PRIMARY KEY(id_encuentro, cod_equipo),
FOREIGN KEY (cod_equipo) REFERENCES equipo(cod_equipo),
FOREIGN KEY (id_encuentro) REFERENCES encuentro(id_encuentro)
);
CREATE TABLE encuentro (
id_encuentro INT NOT NULL,
id_arena INT NOT NULL,
equipo_1 INT NOT NULL,
equipo_2 INT NOT NULL,
descripcion VARCHAR(90),
PRIMARY KEY(id_encuentro),
FOREIGN KEY (id_arena) REFERENCES arena(id_arena)
);
CREATE TABLE resultado (
id_resultado INT NOT NULL,
id_encuentro INT NOT NULL,
descripcion VARCHAR(90),
PRIMARY KEY(id_resultado),
FOREIGN KEY (id_encuentro) REFERENCES encuentro(id_encuentro)
);
CREATE TABLE arena (
id_arena INT NOT NULL,
nombre VARCHAR(50) NOT NULL,
tamaño VARCHAR(20) NOT NULL,
descripcion VARCHAR(90),
PRIMARY KEY(id_arena)
);
/* CONSULTAS: */
/* Ejemplos para verificar: */
INSERT INTO equipo (cod_equipo, nombre, puntaje) VALUES
(1, 'Equipo A', 91),
(2, 'Equipo B', 85),
(3, 'Equipo C', 75);
INSERT INTO equipo_encuentro (id_encuentro, cod_equipo) VALUES
(1, 3),
(2, 4),
(3, 1);
INSERT INTO encuentro (id_encuentro, id_arena, equipo_1, equipo_2, descripcion)
VALUES
(1, 1, 1, 2, 'Encuentro 1'),
(2, 2, 1, 3, 'Encuentro 2'),
(3, 1, 2, 3, 'Encuentro 3');
INSERT INTO resultado (id_resultado, id_encuentro, descripcion) VALUES
(1, 1, 'Resultado Encuentro 1'),
(2, 2, 'Resultado Encuentro 2'),
(3, 3, 'Resultado Encuentro 3');
INSERT INTO arena (id_arena, nombre, tamaño, descripcion) VALUES
(1, 'Arena 1', '250m2', 'Descripción Arena 1'),
(2, 'Arena 2', '280m2', 'Descripción Arena 2');
/* 1. */
SELECT CONCAT(e.id_encuentro,' ',e.descripcion) AS descripcion_encuentro,
r.descripcion AS descripcion_resultado,
a.nombre AS nombre_arena,
eq1.nombre AS nombre_equipo1, eq2.nombre AS nombre_equipo2
FROM encuentro e
JOIN resultado r ON e.id_encuentro = r.id_encuentro
JOIN arena a ON e.id_arena = a.id_arena
JOIN equipo eq1 ON e.equipo_1 = eq1.cod_equipo
JOIN equipo eq2 ON e.equipo_2 = eq2.cod_equipo
WHERE eq1.puntaje > 80 AND eq2.puntaje > 80
GROUP BY eq1.nombre
ORDER BY eq1.puntaje DESC;
/* 2. */
DELETE FROM arena
WHERE tamaño <= '270m2';
/* 3. */
UPDATE equipo
SET puntaje = puntaje * 1.3
WHERE puntaje < (SELECT MIN(puntaje) FROM equipo);|