From 6fa20512e67a00e915ff94c560f6f87dbaa17a10 Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 16:26:57 -0400 Subject: [PATCH 01/11] vista.sql --- vista.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 vista.sql diff --git a/vista.sql b/vista.sql new file mode 100644 index 0000000..0d0a60f --- /dev/null +++ b/vista.sql @@ -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 (TD.DESCRIPCION = 'ATLETISMO')) + GROUP BY (P.ID_PAIS, P.NOMBRE); \ No newline at end of file From 045c532ee7093f2974107bacb8e240852ce6c31b Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 16:27:21 -0400 Subject: [PATCH 02/11] Correciones Finales data --- data.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/data.sql b/data.sql index 84e09d0..ea55265 100644 --- a/data.sql +++ b/data.sql @@ -134,5 +134,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')); From 4e4758049a275e366687e28d71dd6c094f7e986d Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 16:27:36 -0400 Subject: [PATCH 03/11] Correcion Consulta --- consulta.sql | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/consulta.sql b/consulta.sql index 4c6a008..fa4ffd6 100644 --- a/consulta.sql +++ b/consulta.sql @@ -12,17 +12,6 @@ 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) From a79a2d4232461a46563c2f877a75dccd25f5b8fa Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 16:27:47 -0400 Subject: [PATCH 04/11] Correcion Triggers Test --- trigger_test.sql | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/trigger_test.sql b/trigger_test.sql index 5c98c60..664d3bd 100644 --- a/trigger_test.sql +++ b/trigger_test.sql @@ -1,12 +1,16 @@ -- Trigger 3 +INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Lebu', 1); + +INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Dichato', 1); + +INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 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, 2, 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_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 2, 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); From 10c75d7ceb65810c2c7d24d4e6c76d63bfdfac26 Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 17:35:26 -0400 Subject: [PATCH 05/11] Correcion vista --- vista.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vista.sql b/vista.sql index 0d0a60f..9a8774e 100644 --- a/vista.sql +++ b/vista.sql @@ -6,5 +6,5 @@ CREATE OR REPLACE VIEW MAX_ATLETA_ATLETISMO_PAIS AS 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')) + WHERE TIPO = (SELECT TD.ID_TIPO FROM TIPOS_DEPORTES TD WHERE (UPPER(TD.DESCRIPCION) = 'ATLETISMO')) GROUP BY (P.ID_PAIS, P.NOMBRE); \ No newline at end of file From 128986a45e35fa7438dde83a4557abda0abbf9af Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 17:35:43 -0400 Subject: [PATCH 06/11] Correcion consulta 2 ; --- consulta.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consulta.sql b/consulta.sql index fa4ffd6..7a2db92 100644 --- a/consulta.sql +++ b/consulta.sql @@ -15,4 +15,4 @@ WHERE A.ID_ATLETA NOT IN ( 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)); From 99687cd0ad4d2c27baa67c790e7ea04876cecdea Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 17:56:20 -0400 Subject: [PATCH 07/11] correcion test --- trigger_test.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trigger_test.sql b/trigger_test.sql index 664d3bd..15c0dd5 100644 --- a/trigger_test.sql +++ b/trigger_test.sql @@ -13,8 +13,8 @@ INSERT INTO PARTICIPAR_PRECOMPETENCIA (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FE INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 2, 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'); From 488f475d6c9c026343a7472115ba6a7b6d11f4e0 Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 18:21:09 -0400 Subject: [PATCH 08/11] Correcion para Trigger 4 --- data.sql | 1 + trigger_test.sql | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/data.sql b/data.sql index ea55265..56e5551 100644 --- a/data.sql +++ b/data.sql @@ -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'); diff --git a/trigger_test.sql b/trigger_test.sql index 15c0dd5..f56a36b 100644 --- a/trigger_test.sql +++ b/trigger_test.sql @@ -5,12 +5,14 @@ INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Dichato', 1); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 2); +INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 2); + -- Trigger 4 -INSERT INTO PARTICIPAR_COMPETENCIA (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES (1, 2, 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_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, 2, 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')); -- Trigger 5 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); From b9d0829b9bec3a6a0a54a74b247fad3377bad644 Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 18:22:57 -0400 Subject: [PATCH 09/11] Se Agrega validacion que el usuario no puede ingresar una ID mayor a la existente --- trigger.sql | 8 ++++++++ trigger_test.sql | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/trigger.sql b/trigger.sql index 6d8c8d7..5a07f16 100644 --- a/trigger.sql +++ b/trigger.sql @@ -10,12 +10,19 @@ DECLARE BEGIN SELECT MAX(ID_CIUDAD) INTO v_id_ciudad FROM CIUDAD; + 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; + END IF; + IF v_id_ciudad IS NULL THEN :NEW.ID_CIUDAD := 1; ELSE :NEW.ID_CIUDAD := v_id_ciudad + 1; END IF; END; +/ -- Trigger 4 CREATE OR REPLACE TRIGGER VALIDACION_PRE_COMPETENCIA @@ -42,6 +49,7 @@ BEGIN END IF; CLOSE PARTICIPAR_PRECO; END; +/ -- Trigger 5 CREATE OR REPLACE TRIGGER CALCULAR_VALOR_DELEGACION diff --git a/trigger_test.sql b/trigger_test.sql index f56a36b..b9cdf4b 100644 --- a/trigger_test.sql +++ b/trigger_test.sql @@ -5,7 +5,7 @@ INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Dichato', 1); INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 2); -INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Wingsi', 2); +INSERT INTO CIUDAD (ID_CIUDAD, NOMBRE, PAIS) VALUES (20, 'Wingsi', 2); -- Trigger 4 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')); From 09a20f7ceb8b39bfbc098e882b026b93a492f5cc Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 18:45:47 -0400 Subject: [PATCH 10/11] Se agregan todas las validaciones del trigger requeridas --- trigger.sql | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/trigger.sql b/trigger.sql index 5a07f16..d9dced7 100644 --- a/trigger.sql +++ b/trigger.sql @@ -6,6 +6,7 @@ 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; @@ -14,13 +15,24 @@ BEGIN 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 + 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; - IF v_id_ciudad IS NULL THEN - :NEW.ID_CIUDAD := 1; - ELSE - :NEW.ID_CIUDAD := v_id_ciudad + 1; - END IF; + END; / From 0e614e65302668510787f3a18bf80acffeb2cf0e Mon Sep 17 00:00:00 2001 From: GID Projects Date: Sat, 27 Jun 2020 18:47:23 -0400 Subject: [PATCH 11/11] Corrercion test --- trigger_test.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trigger_test.sql b/trigger_test.sql index b9cdf4b..3637717 100644 --- a/trigger_test.sql +++ b/trigger_test.sql @@ -1,11 +1,11 @@ -- Trigger 3 -INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Lebu', 1); +INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Quelite', 1); -INSERT INTO CIUDAD (NOMBRE, PAIS) VALUES ('Dichato', 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, '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, 5, TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));