Процедура SQL для вставки записей в таблицу на основе записей в другой таблице - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть FormTable

| FormId | FormName | ParentLawId |  StartDate | Frequency |
|--------|----------|-------------|------------|-----------|
|      1 |    FormA |          21 | 2017-11-06 |   Monthly |
|      2 |    FormB |          22 | 2016-12-06 |    Yearly |
|      3 |    FormC |          24 | 2015-06-08 |  Quaterly |
|      4 |    FormD |          24 | 2018-02-11 |   Monthly |

У меня есть другая CalendarTable

| CalendarId | LawId |  StartDate | Frequency | FormId |
|------------|-------|------------|-----------|--------|
|          1 |    21 | 2017-11-06 |   Monthly |      1 |
|          2 |    24 | 2015-06-08 |  Quaterly |      3 |

Я хочу вставить записи в CalendarTable для форм (в FormTable), у которых нет соответствующих записейв CalendarTable.

Например, конечный CalendarTable должен быть

| CalendarId | LawId |  StartDate | Frequency | FormId |
|------------|-------|------------|-----------|--------|
|          1 |    21 | 2017-11-06 |   Monthly |      1 |
|          2 |    24 | 2015-06-08 |  Quaterly |      3 |
|          3 |    22 | 2016-12-06 |    Yearly |      2 |
|          4 |    24 | 2018-02-11 |   Monthly |      4 |

Итак, в CalendarTable сгенерировано 2 новые записи, соответствующие столбцу FormId (FormTable) и остальной части столбцазначения в CalendarTable должны быть такими же, как в соответствующих столбцах FormTable

SQL Fiddle для схемы двух таблиц

http://sqlfiddle.com/#!9/e337d0/1

1 Ответ

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

Используйте этот запрос внутри вашей хранимой процедуры

Примечание: сохранение идентификатора календаря в качестве автоинкремента

insert into CalendarTable(LawId, StartDate, Frequency, FormId)
select ParentLawId,StartDate,Frequency,FormId
from FormTable  where formid not in(select formid from CalendarTable);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...