Coldfusion 插入到表中选择columnname=xxx和columnname2=yyy循环次数过多的表

Coldfusion 插入到表中选择columnname=xxx和columnname2=yyy循环次数过多的表,coldfusion,mariadb,lucee,Coldfusion,Mariadb,Lucee,我会尽可能完整但简洁。如果我遗漏了什么,请告诉我 我有一系列活动,每个活动都由完成给定活动所需的步骤组成。每个步骤都有一些附加组件,这些组件与该步骤一起执行。如果你把它看成一棵树,它会像这样: 活动 -台阶 -组成部分 下面是组件表的数据集结果 我希望编写一个mySQL insert/select语句,允许我复制ID=84。但在插入时,ID值应继承活动的新ID,例如,让我们使用299,AID应继承步骤值的ID,例如,对于此,让我们使用501506 我知道mySQL语句会是什么样子,这不是问题所

我会尽可能完整但简洁。如果我遗漏了什么,请告诉我

我有一系列活动,每个活动都由完成给定活动所需的步骤组成。每个步骤都有一些附加组件,这些组件与该步骤一起执行。如果你把它看成一棵树,它会像这样:

活动 -台阶 -组成部分

下面是组件表的数据集结果

我希望编写一个mySQL insert/select语句,允许我复制ID=84。但在插入时,ID值应继承活动的新ID,例如,让我们使用299,AID应继承步骤值的ID,例如,对于此,让我们使用501506

我知道mySQL语句会是什么样子,这不是问题所在。我遇到的问题是如何编写循环,以便传入新ID和新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;

我遗漏了什么?

我们想要复制我们的一个活动,所以我们想要传递我们想要复制的ID和我们想要成为新ID的ID,除非我们有其他方法来确定它

variables.workoutDAO.NEW_makeCopyCoreSet(
            origID = local.dataStruct.ID,
            newID = local.dataStruct.newID
        );
然后在我们的新函数&CF函数中,我们有一个查询:

要从SQL端查看它的运行情况,请执行以下操作:

首先,我们建立我们的基础数据


盖子是什么?什么版本的MySQL?LID是locationID中的location,但该功能尚未实现。看起来您正在为每个循环进行插入。这可以击败你的数据库。同意。我不会反对我正在研究的一个插入语句。我想如果我能让它工作,我可以修改它,以便在更好地理解查询插入语句之后循环。我对选择/插入循环没有太多经验。是的,我讨厌这样做。我喜欢dbfiddle.uk,但这一直让我心痛-谢肖恩,我遇到了一个问题。看起来我们/我完全忘记了501502506的新AID值。ID部分工作,但我如何循环新AID值,使501对应于432,502对应于433等等?您说过SID是一个自动编号。你能后退一步,定义每一列代表什么吗?这就是该表中的全部内容,还是有其他列进一步定义了SID号之间的差异?您现在呼叫的内容与原始显示不匹配。我不知道你的号码是怎么排的。我知道保护数据不能过于明确,但我需要了解如何确定组件表的基本知识。您能否提供步骤和活动表的简单示例?501对应432是什么意思?我已经解决了这个问题。用500个字符或更少的字符来写有点复杂,但现在它工作得很好,谢谢你让我朝着正确的方向走。很高兴你把问题解决了。
INSERT INTO component (ID, LID, AID)
SELECT DISTINCT :newID, LID, AID 
FROM component
WHERE ID = :origID
/* SETUP 1 */
CREATE TABLE component ( ID int, LID int, AID int, SID int UNIQUE AUTO_INCREMENT)

/* SETUP 2 */
INSERT INTO component (ID, LID, AID)
SELECT 84,0,432 UNION ALL
SELECT 84,0,433 UNION ALL
SELECT 84,0,434 UNION ALL
SELECT 84,0,435 UNION ALL
SELECT 84,0,435 UNION ALL
SELECT 84,0,435 UNION ALL
SELECT 84,0,435 UNION ALL
SELECT 84,0,436 UNION ALL
SELECT 84,0,437

/* What's in the original? */
SELECT * FROM component
ID | LID | AID | SID -: | --: | --: | --: 84 | 0 | 432 | 1 84 | 0 | 433 | 2 84 | 0 | 434 | 3 84 | 0 | 435 | 4 84 | 0 | 435 | 5 84 | 0 | 435 | 6 84 | 0 | 435 | 7 84 | 0 | 436 | 8 84 | 0 | 437 | 9
/* Copy an ID. */
INSERT INTO component (ID, LID, AID)
SELECT DISTINCT 299, LID, AID 
FROM component
WHERE ID = 84

/* What's in the table for the new ID? */
SELECT * FROM component WHERE ID = 299
ID | LID | AID | SID --: | --: | --: | --: 299 | 0 | 432 | 16 299 | 0 | 433 | 17 299 | 0 | 434 | 18 299 | 0 | 435 | 19 299 | 0 | 436 | 20 299 | 0 | 437 | 21