Выберите данные из другой таблицы и вставьте вычисления в новую таблицу - PullRequest
0 голосов
/ 20 января 2020

Я новичок в SQL и у меня есть проблема, которую я не могу решить. У меня есть четыре таблицы, и у каждой из них есть два столбца. Я должен взять первый столбец первых трех таблиц и вычислить сумму столбцов. Конечный результат должен быть добавлен в первый столбец четвертой таблицы. Затем я должен взять второй столбец первых трех таблиц и умножить сумму столбцов. Затем конечный результат должен быть добавлен во второй столбец четвертой таблицы.

Мне нужны все возможные комбинации. Таким образом, если первые три таблицы содержат 10 строк, то четвертая таблица должна содержать 10 * 10 * 10 = 1000 строк. Можно ли это сделать с помощью SQL?

Table1:

COL1   COL2
   2      6
   4      8

Table2:

COL1   COL2
  12     16
  14     18

Table3:

COL1   COL2
  22     26
  24     28

В этом случае Table4 должен содержать строки:

COL1   COL2
  36   2496  (COL1: T1.C1+T2.C1+T3.C1; COL2: T1.C2*T2.C2*T3.C3)
  38   3328
  38   2808
  40   3744
  38   2688
  40   3584
  40   3024
  42   4032

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Вам необходимо соединить 3 таблицы и выполнить расчеты:

insert into Table4(COL1, COL2)
select
  t1.col1 + t2.col1 + t3.col1 COL1,
  t1.col2 * t2.col2 * t3.col2 COL2
from Table1 t1
cross join Table2 t2
cross join Table3 t3;

См. Демоверсию . Если Table4 не существует, вы можете создать его следующим образом:

create table Table4 as
select
  t1.col1 + t2.col1 + t3.col1 COL1,
  t1.col2 * t2.col2 * t3.col2 COL2
from Table1 t1
cross join Table2 t2
cross join Table3 t3;

См. demo .

Результаты:

| COL1 | COL2 |
| ---- | ---- |
| 36   | 2496 |
| 38   | 2688 |
| 38   | 2808 |
| 40   | 3024 |
| 38   | 3328 |
| 40   | 3584 |
| 40   | 3744 |
| 42   | 4032 |
0 голосов
/ 20 января 2020

На основании строго того, что вы указали в своем вопросе, запрос ниже (в MySQL) решит вашу проблему.

CREATE TABLE TABLE4 AS 
SELECT 
    SUM(C1) AS C1, SUM(C2) AS C2 
FROM
(
SELECT T1.C1 AS C1, T1.C2 AS C2 FROM TABLE1 T1
UNION ALL
SELECT T2.C1, T2.C2 FROM TABLE2 T2
UNION ALL
SELECT T3.C1, T3.C2 FROM TABLE3 T3
) x

Синтаксис будет более или менее одинаковым в других решениях СУБД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...