2015-10-15 4 views
0

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

MERGE INTO ResultTable R 
USING InitialTable IT 
ON (false) 
WHEN MATCHED THEN -- do some stuff 
WHEN NOT MATCHED THEN 
INSERT (PrimaryKey,..., ThingFromJoinedTable) 
VALUES (Seq.NEXTVAL, ..., ???); 

Так Initial таблица имеет внешний ключ, и я хочу, чтобы получить соответствующее значение в присоединяемой таблице.

У кого-нибудь есть идеи о том, как это сделать, я пробовал иметь вложенный выбор с соединением, но он дает мне ошибку single-row subquery returns more than one row.

ответ

1

Что-то вроде этого:

MERGE INTO ResultTable R 
USING (SELECT it.this, it.that, third.this, third.that 
     FROM InitialTable it 
     JOIN ThirdTable third ON <your join criteria>) SRC 
/* depending on which columns you want for the join */ 
ON (r.col1 = src.col1 and r.col2 = src.col2) 
WHEN MATCHED THEN -- do some stuff 
/* depending on which columns you need to merge */ 
UPDATE SET 
    r.col4 = src.col4, 
    r.col5 = src.col5, 
    etc. 
WHEN NOT MATCHED THEN 
INSERT (PrimaryKey,..., colThis, colThat, ....) 
VALUES (Seq.NEXTVAL, ..., src.colThis, src.colThat); 
+0

У меня есть верхняя часть рабочей (Когда это слито), однако то, что я не могу понять, это последняя часть вставки, где я хотел бы, чтобы вставить данные из третьих таблица, связанная с InitialTable –

+0

Вам придется присоединиться к третьей таблице в предложении USING. Я изменю свой ответ, чтобы показать, как это сделать. –

+0

Спасибо, всего лишь маленький вопрос. Что здесь обозначает SRC? –

Смежные вопросы