从多个视图插入值

2ul0zpep  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(345)

我有三种观点,reembolsos,tarjetas和no,pagos。我想将这些视图的值插入名为acciones的表中。
reembolsos\ u v的列如下:

hora             reembolsos
00               2
02               13
03               39

tarjetas\u v的列如下:

hora             tarjetas
00               6
02               12
03               42

no_pagos_v的列如下:

hora             no_pagos
00               3
01               2
03               11

acciones表包含以下列:

hora             pagocr           pago          no_pago

我想按以下方式将三个视图的列的值插入表acciones中:在表acciones的hora列中插入视图的horas列的值,在pagocr列中插入reembolsos列的值,在pago列中,我要插入tarjetas列的值,在acciones表的no\ pago列中,我要插入no\ pagos列的值。
我尝试了以下查询:

INSERT INTO acciones(hora,pagocr,pago,no_pago) 
SELECT r.hora, r.reembolsos, t.tarjetas, n.no_pagos FROM 
reembolsos_v AS r, tarjetas_v AS t, no_pagos_v AS n

此查询的结果如下:

hora      pagocr      pago      no_pago
00        2           6         3 
00        2           6         2
00        2           6         11

这不是正确的结果。正确的结果如下:

hora      pagocr      pago      no_pago
00        2           6         3
02        13          12        null
03        49          32        11

我怎样才能得到正确的结果?
谢谢

nmpmafwu

nmpmafwu1#

如问题中所示的查询执行catersian乘积,即一个表中的每一行都与其他表中的所有其他行联接。然而 full join 在这种情况下需要。

SELECT COALESCE(r.hora,t.hora,n.hora) as hora,r.reembolsos,t.tarjetas,n.no_pagos 
FROM reembolsos_v r 
FULL JOIN tarjetas_v t on t.hora = r.hora
FULL JOIN no_pagos_v n on n.hora = t.hora

相关问题