У меня есть следующие таблицы:Переберите данных курсора и вставить запись, если она не существует
Table1:
doc_id | item_id
------ | ------
71 | 4
------ | ------
75 | 8
------ | ------
75 | 3
------ | ------
75 | 2
------ | ------
73 | 7
Table2:
id | parent_id | parameter_id
------ | -----------|-------------
1 | 4 | 4
------ | -----------|-------------
2 | 8 | 3
------ | -----------|-------------
3 | 3 | 4
------ | -----------|------------
4 | 2 | 6
------ | -----------|------------
5 | 7 | 4
Я хочу, чтобы вставить строку в таблице 2 следующим образом:
Выберите item_id из таблицы 1, где document_id = 75;
Для каждого item_id из 1. проверьте, существует ли запись в таблице 2, где parent_id таблицы2 = item_id таблицы 1 и parameter_id = 4;
Если запись не существует, введите данные.
При вставке он должен вставлять в Таблицу 2 значения (max (id) +1, parent_id этой конкретной записи (связанный элемент item1id таблицы1), 4 как параметр_id).
Как это сделать? Может кто-нибудь дать мне какой-то намек. Я думаю использовать курсор и прокрутить его и проверить, существует ли запись. Затем вставьте данные соответственно?
DECLARE CURSOR C1
IS
SELECT * FROM table 1
WHERE DOC_ID = 75;
BEGIN
FOR EACH_RECORD IN C1 LOOP
// check for Table 2 for EACH_RECORD.CONFIG_ITEM_ID;
END LOOP;
END;
/
Добро пожаловать на Stackoverflow , Мы здесь, чтобы помочь вам - не делайте для вас работы: вы должны показать нам, что вы пробовали, и где вы потерпели неудачу (что также означает - задание более целенаправленного вопроса). – alfasin
Я. В другом вопросе/ответе упоминается команда слияния. это, вероятно, самый простой способ сделать это. – EvilTeach
Как заметил JNevill, это может быть один оператор SQL. Начните с определения оператора выбора, который идентифицирует строки в Таблице 1, которые должны быть введены в Таблицу 2. Использовать коррелированный подзапрос «где не существует» для текста, существует ли строка в таблице 2, которая соответствует описанным вами условиям , Из этого запроса вы сможете разработать инструкцию insert. Попытайтесь использовать последовательность, чтобы дать вам значение для столбца id, а не пытаться увеличить максимальный уровень в настоящее время в таблице. –