我有三个视图,reembolsos_v,tarjetas_v和no_pagos_v。我想将这些视图的值插入到名为acciones的表中。
reembolsos_v的列如下:
hora reembolsos
00 2
02 13
03 39
tarjetas_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中,我想插入column的值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
如何获得正确的结果?
谢谢
答案 0 :(得分:0)
问题中显示的查询执行的是Caterian乘积,即一个表中的每一行都与另一表中的所有其他行连接在一起。但是,在这种情况下,需要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