POSTGRESQL - ПРОБЛЕМА INSERT С LEFT JOIN И ВСТУПИТЕ В БРАК

Я имею это правило INSERT по отношению к таблице машиностроение с полями id_proto_periodo и coste_hora_aplicado, что берет стоимость одного select в другую таблицу через один, ВСТУПИЛО В БРАК, которую я хочу изменить для того, чтобы согласно стоимости, которая вводит в таблице машиностроение, была введена стоимость или другой в цене час.

insert - следующий.

INSERT INTO pro.proto_maquinaria(                                           --TABLA DONDE SE INSERTAN LOS DATOS
                    id_proto_periodo, coste_hora_aplicado,
                )
                SELECT
                    new.id_proto_periodo,
                            CASE WHEN **t_p.id_tarifa_proto = 1** THEN (    -- VALOR DE TARIFA de proto_periodo
                                t.tarifa_power 
                                )ELSE (                         
                                t.tarifa_power2 
                                ) END
                FROM navh.proc_centro_trabajo__vista AS t                   -- TABLA DE DONDE SE COGEN LOS PRECIOS

                **JOIN pro.proto_periodo__vista AS t_p ON t_p.id = new.id_proto_periodo; -- QUIERO SABER EL VALOR DE id_tarifa_proto de proto_periodo segun el valor de new.id_proto_periodo PARA QUE EL CASE INSERTE UN VALOR U OTRO.**

Они * он, где у меня есть проблема.

В proc.centro_trabajo_vista я не имею id_proto_periodo. id_proto_periodo я буду вводить это в машиностроении __ увиденная (new.id_proto_periodo). Ошибка:

JOIN pro.proto_periodo __ увиденная ЭКСПЕРТ t_p ON t_p.id = new.id_pro... ^ HINT: There is an entry for table "new", but it cannot be referenced from this part of the query.

Со мной не случается, как делание этого без trigger after insert, я пришел бы гораздо лучше, если бы смогли так. Спасибо.

0
задан 21.03.2019, 11:19
1 ответ

В конце концов, поскольку я не смог сделать это посредством leftjoin, я это сделал посредством субконсультации оставаясь:

INSERT INTO pro.proto_maquinaria(                                           
                    id_proto_periodo, coste_hora_aplicado,
                )
                SELECT
                    new.id_proto_periodo,
                            CASE WHEN ((SELECT id_tarifa_proto FROM pro.proto_periodo__vista WHERE id = new.id_proto_periodo)= 1) THEN (               
                                t.tarifa_power 
                                )ELSE (                         
                                t.tarifa_power2
                                ) END
                FROM navh.proc_centro_trabajo__vista AS t       

спасибо за помощь, меня empeГ±e в делании этого с left join, не имея ссылки.

0
ответ дан 02.12.2019, 05:21