Вставьте значения из нескольких представлений - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть три представления: 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

Я хочу вставить значения столбцов трех представлений вв таблицу вкладывается следующим образом: в столбцы hora таблицы вставляются значения столбцов horas представлений, в столбец pagocr я хочу вставить значения столбцов reembolsos, в столбец pago я хочу вставлять значения столбцов tarjetas ив столбце no_pago таблицы aciones я хочу вставить значения столбца 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

Как получить правильные результаты?

Спасибо

1 Ответ

0 голосов
/ 28 декабря 2018

Запрос, как показано в вопросе, выполняет 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...