Как вставить строки в таблицу на основе значений в двух других таблицах без перекрытий? - PullRequest
0 голосов
/ 21 марта 2019

После борьбы с этим и исследования половины моего рабочего дня я, наконец, сдаюсь и прошу помощи. У меня есть три стола. Мне нужно вставить в таблицу 1 всю информацию из таблицы 2 для КАЖДОГО значения таблицы 3.

Может быть, я просто не могу понять, что мне нужно для этого сделать - но таблица 2 и таблица 3 не имеют перекрывающихся столбцов, так как мне связать их, чтобы вставить их в таблицу 1?

Я пробовал несколько разных вариантов, мой последний вот такой:

insert into Table1 (column1, column2, column4, column3)
    select column1, column2, column3
    from Table2
    union
    select column3
    from Table3

Я получаю эту ошибку:

Сообщение 205, Уровень 16, Состояние 1, Строка 2
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.

Есть дополнительный столбец, который мне нужно заполнить, но, поскольку это общее значение, это можно сделать после факта с помощью оператора update.

Обновление

Меня спросили, какой результат я ищу ...

Первое число - таблица, из которой оно взято, второе - столбец, третье - значение.

Table1

2.1.1 | 2.2.1 | 3.3.1 | 2.4.1  
2.1.2 | 2.2.2 | 3.3.1 | 2.4.2  
2.1.3 | 2.2.3 | 3.3.1 | 2.4.3  
2.1.1 | 2.2.1 | 3.3.2 | 2.4.1  
2.1.2 | 2.2.2 | 3.3.2 | 2.4.2  
2.1.3 | 2.2.3 | 3.3.2 | 2.4.3

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Сделать null, если столбец не существует:

select column1, column2, column3
from Table2
union all
select column3, null, null
from Table3
2 голосов
/ 21 марта 2019

Мне нужно вставить в таблицу 1 всю информацию из таблицы 2 для КАЖДОГО значения таблицы 3.

Я думаю, что вы хотите cross join:

insert into Table1 (column1, column2, column4, column3)
    select t2.column1, t2.column2, t2.column3, t1.column3
    from Table2 t2 cross join
         Table3 t3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...