Merge pull request #20 from cromerc/feature_Correciones_Finales

Feature correciones finales
This commit is contained in:
Chris Cromer 2020-06-27 19:41:15 -04:00 committed by GitHub
commit d98900140f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 48 additions and 24 deletions

View File

@ -12,18 +12,7 @@ WHERE A.ID_ATLETA NOT IN (
);
-- Consulta 2
-- Parte 1 Crear una vista que trae la cantidad maxima de atletas asociados a un pais que compitan en Atletismo
CREATE OR REPLACE VIEW MAX_ATLETA_ATLETISMO_PAIS AS
SELECT P.ID_PAIS, P.NOMBRE, COUNT(*) AS CANTIDAD_ATLETA
FROM COMPETENCIA C
LEFT JOIN PARTICIPAR_COMPETENCIA PC ON (C.ID_COMPETENCIA = PC.ID_COMPETENCIA)
LEFT JOIN ATLETA A ON A.ID_ATLETA = PC.ID_ATLETA
INNER JOIN DELEGACION D ON (D.ATLETA = A.ID_ATLETA)
INNER JOIN PAIS P ON (P.ID_PAIS = D.PAIS)
WHERE TIPO = (SELECT TD.ID_TIPO FROM TIPOS_DEPORTES TD WHERE (TD.DESCRIPCION = 'ATLETISMO'))
GROUP BY (P.ID_PAIS, P.NOMBRE);
SELECT P.NOMBRE, M.CANTIDAD_ATLETA
FROM MAX_ATLETA_ATLETISMO_PAIS M
LEFT JOIN PAIS P ON (P.ID_PAIS = M.ID_PAIS)
WHERE (M.CANTIDAD_ATLETA = (SELECT MAX(CANTIDAD_ATLETA) FROM MAX_ATLETA_ATLETISMO_PAIS))
WHERE (M.CANTIDAD_ATLETA = (SELECT MAX(CANTIDAD_ATLETA) FROM MAX_ATLETA_ATLETISMO_PAIS));

View File

@ -13,6 +13,7 @@ INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('I
INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Chris', 'Cromer', TO_DATE('1998-05-22 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Chilena');
INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Benjamin', 'Perez', TO_DATE('1992-01-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Argentina');
INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Diego', 'Perez', TO_DATE('1983-12-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Peruana');
INSERT INTO ATLETA (NOMBRE, APELLIDO, FECHA_NACIMIENTO, NACIONALIDAD) VALUES ('Kevin', 'Perez', TO_DATE('1983-12-24 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'Peruana');
INSERT INTO PAIS (NOMBRE) VALUES ('Chile');
@ -134,5 +135,3 @@ INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FE
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 1, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 2, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 3, TO_DATE('2020-06-06 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (2, 1, TO_DATE('2020-07-08 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (3, 2, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));

View File

@ -6,16 +6,35 @@ ON CIUDAD
FOR EACH ROW
DECLARE
v_id_ciudad CIUDAD.ID_CIUDAD%TYPE;
v_id_ciudad_busqueda CIUDAD.ID_CIUDAD%TYPE;
BEGIN
SELECT MAX(ID_CIUDAD) INTO v_id_ciudad FROM CIUDAD;
IF v_id_ciudad IS NULL THEN
:NEW.ID_CIUDAD := 1;
IF (:NEW.ID_CIUDAD IS NOT NULL) AND (v_id_ciudad IS NOT NULL) THEN
IF (v_id_ciudad+1) < :NEW.ID_CIUDAD THEN
RAISE_APPLICATION_ERROR(-20120, 'NO SE PUEDE INSERTAR, El ID ingresado es mayor al ID maximo de la tabla');
END IF;
ELSE
:NEW.ID_CIUDAD := v_id_ciudad + 1;
IF v_id_ciudad IS NULL THEN
:NEW.ID_CIUDAD := 1;
ELSE
IF :NEW.ID_CIUDAD IS NOT NULL THEN
SELECT ID_CIUDAD INTO v_id_ciudad_busqueda
FROM CIUDAD WHERE (ID_CIUDAD = :NEW.ID_CIUDAD);
IF v_id_ciudad_busqueda IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20120, 'NO SE PUEDE INSERTAR, El ID ingresado ya Existe');
END IF;
ELSE
:NEW.ID_CIUDAD := v_id_ciudad + 1;
END IF;
END IF;
END IF;
END;
/
-- Trigger 4
CREATE OR REPLACE TRIGGER VALIDACION_PRE_COMPETENCIA
@ -42,6 +61,7 @@ BEGIN
END IF;
CLOSE PARTICIPAR_PRECO;
END;
/
-- Trigger 5
CREATE OR REPLACE TRIGGER CALCULAR_VALOR_DELEGACION

View File

@ -1,16 +1,22 @@
-- Trigger 3
INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Quelite', 1);
INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Convien', 1);
INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 2);
INSERT INTO CIUDAD (ID_CIUDAD, NOMBRE, PAIS) VALUES (20, 'Dailys', 2);
-- Trigger 4
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 21, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 5, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (3, 2, 100, TO_DATE('2020-06-27 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 21, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES (1, 5, 20, TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 5, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
-- Trigger 5
INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (1, 1, 5, 50000);
INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (1, 1, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-07-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 5, 50000);
UPDATE HOSPEDAR SET PRECIO_DELEGACION = 5 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1);
UPDATE HOSPEDAR SET PRECIO_DELEGACION = 5 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1 AND FECHA_INICIO = '2020-07-09 00:00:00');
UPDATE HOSPEDAR SET PRECIO_ATLETA = 50000 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1);
UPDATE HOSPEDAR SET PRECIO_ATLETA = 50000 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1 AND FECHA_INICIO = '2020-07-09 00:00:00');

10
vista.sql Normal file
View File

@ -0,0 +1,10 @@
-- Parte 1 Crear una vista que trae la cantidad maxima de atletas asociados a un pais que compitan en Atletismo
CREATE OR REPLACE VIEW MAX_ATLETA_ATLETISMO_PAIS AS
SELECT P.ID_PAIS, P.NOMBRE, COUNT(*) AS CANTIDAD_ATLETA
FROM COMPETENCIA C
LEFT JOIN PARTICIPAR_COMPETENCIA PC ON (C.ID_COMPETENCIA = PC.ID_COMPETENCIA)
LEFT JOIN ATLETA A ON A.ID_ATLETA = PC.ID_ATLETA
INNER JOIN DELEGACION D ON (D.ATLETA = A.ID_ATLETA)
INNER JOIN PAIS P ON (P.ID_PAIS = D.PAIS)
WHERE TIPO = (SELECT TD.ID_TIPO FROM TIPOS_DEPORTES TD WHERE (UPPER(TD.DESCRIPCION) = 'ATLETISMO'))
GROUP BY (P.ID_PAIS, P.NOMBRE);