MySQL - TRIGGER

 
Vista:
Imágen de perfil de Javiera
Val: 6
Ha aumentado su posición en 11 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

TRIGGER

Publicado por Javiera (4 intervenciones) el 10/09/2019 15:24:50
Hola!
Tengo los siguientes campos en mi tabla1

-Id
-Region
-Anio
-Comuna
-PIB

Mi idea, es poder calcular el porcentaje de variación respecto al año anterior del PIB de las comunas. Para esto, tengo el siguiente select:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT
    actual.dAnio AS 'Año',
    actual.sComuna AS 'Comuna',
    actual.iPIB AS 'Total PIB',
    IFNULL(actual.iPIB, 0) - (antes.totalPIB) AS 'Variacion',
    FORMAT(100 * (IFNULL(actual.iPIB, 0) - (antes.totalPIB)) / (antes.totalPIB),
        2) AS 'Variacion %'
FROM
    t_pibvariacioncomunal actual
        LEFT JOIN
    (SELECT
        dAnio, sComuna, iPIB AS 'totalPIB'
    FROM
        t_pibvariacioncomunal
    GROUP BY dAnio , sComuna) antes ON actual.dAnio = antes.dAnio + 1
        AND actual.sComuna = antes.sComuna
 GROUP BY actual.dAnio , actual.sComuna
 ORDER BY actual.sComuna , actual.dAnio;

Quiero crear un trigger, cosa que al momento de insertar datos en mi tabla 1, se genere en una tabla paralela la información contenida en el SELECT que menciono anteriormente el cual muestra variaciones porcentuales. Si alguien me puede ayudar se lo agradeceria mucho!
Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 50
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

TRIGGER

Publicado por Luis Horacio (20 intervenciones) el 13/09/2019 15:05:55
Buen día, la sintaxis es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TRIGGER testref BEFORE INSERT ON tabla1
  FOR EACH ROW BEGIN
insert into (campo1, campo2)
SELECT
    actual.dAnio AS 'Año',
    actual.sComuna AS 'Comuna',
    actual.iPIB AS 'Total PIB',
    IFNULL(actual.iPIB, 0) - (antes.totalPIB) AS 'Variacion',
    FORMAT(100 * (IFNULL(actual.iPIB, 0) - (antes.totalPIB)) / (antes.totalPIB),
        2) AS 'Variacion %'
FROM
    t_pibvariacioncomunal actual
        LEFT JOIN
    (SELECT
        dAnio, sComuna, iPIB AS 'totalPIB'
    FROM
        t_pibvariacioncomunal
    GROUP BY dAnio , sComuna) antes ON actual.dAnio = antes.dAnio + 1
        AND actual.sComuna = antes.sComuna
 GROUP BY actual.dAnio , actual.sComuna
 ORDER BY actual.sComuna , actual.dAnio;
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar