Я постараюсь быть максимально полным, но кратким, если это необходимо. Если я что-то пропущу, пожалуйста, дайте мне знать.
У меня есть набор действий, и каждое действие состоит из шагов, необходимых для выполнения данного действия. Каждый шаг имеет несколько дополнительных компонентов, которые идут вместе с ним. Если бы вы смотрели на это как на дерево, это выглядело бы так:
ACTIVITY
-- STEP
---- COMPONENT
Ниже приведены результаты набора данных таблицы компонентов.
Я хочу написать оператор вставки / выбора mySQL, который позволит мне скопировать ID = 84
. Однако при вставке значение идентификатора должно наследовать новый идентификатор ACTIVITY
(например, давайте перейдем к 299), а AID должен наследовать значение идентификатора STEP
(например, для этого давайте перейдем к 501 502 503 504 505 506) .
Я знаю, как будет выглядеть оператор mySQL, это не проблема. Проблема, с которой я сталкиваюсь, заключается в том, как написать цикл, чтобы я мог передать новый идентификатор и новые значения AID. SID - это первичный ключ (автоинкремент).
С указанным выше набором данных я ожидаю, что будут вставлены 6 новых записей. Вместо этого я получаю 9, так что мои циклы не зацикливаются правильно, или я передаю неверные данные.
Вот цикл:
for (local.data.newAID in local.data.list_newAID){
// COPY SET
for (local.data.origAID in local.data.list_existingAID){
local.formDataStruct.origAID = local.data.origAID;
variables.workoutDAO.makeCopyCoreSet(
origID = local.dataStruct.ID,
newID = local.dataStruct.newID,
origAID = local.dataStruct.origAID,
newAID = local.dataStruct.newAID
);
}
}
Вот функция makeCopyCoreSet
:
INSERT INTO SET(ID, LID, AID)
SELECT
:newID, LID, :newAID
FROM
Set
WHERE ID = :origID AND AID = :origAID;
Чего мне не хватает?