重复的行以及与不同表中的该ID相关的所有内容

本杰明·泰永(Benjamin Taillon)

我正在开发用于管理老板的Rally公司的软件,他可以在其中管理所有志愿者,他们的感情以及许多其他事情。但是,志愿者和其他事情因事件而异,因此他们都有一列来表示与他们相关联/相关的事件。

我的老板要求我添加一个“复制”按钮,该按钮将复制一个事件(从我的事件表中复制),并且还复制所有志愿者以及与该事件链接的任何其他表中的值,因此新复制品将链接到新事件。

这样做的原因是,他一直在组织集会,而且经常发生从一个Rally(事件)到另一个事件的数据几乎相同,因此,他宁愿做一个完整的重复操作,而不是手动添加所有数据事件以及与之相关的所有数据,然后手动添加和删除其中的错误。

我想知道,MySQL中有什么方法可以复制事件,以及与该事件ID关联的所有内容,即使它们位于不同的表中,并使重复项具有新事件的ID?

遗憾的是我没有太多时间,但是直到得到答案之前,我才能处理老板给我的其他任务。

非常感谢任何帮助我或给我任何提示的人!

编辑:这是我的数据库的架构(我知道它有点脏,而且有问题,我的老板给了我有关如何创建数据库的指示,因为他以前曾经在域中工作过,但是他没有告诉我如何做链接,他想自己做。)我对法语和怪异的名字表示歉意。基本上,我希望在“事件”表中复制一个条目,所有“影响”和“环境”条目都是链接到它,并且所有“ tache”条目都与重复的“ lieu”条目相关。 数据库方案(db_rallye)

编辑2:谢谢MrMadsen的查询!我必须对其进行一些修复,但这是之后的样子。

SET @NEWEVEN = (SELECT MAX(NO_EVE) from db_rallye.event)+1;

INSERT INTO db_rallye.event
SELECT @NEWEVEN, 
       NM_EVE, 
       AN_EVE, 
       DT_EVE, 
       NM_REG_EVE
FROM event
WHERE NO_EVE = event_to_duplicate;

SET @NO_AFFECT_LIEU = (SELECT MAX(NO_AFF) from db_rallye.affect);
INSERT INTO db_rallye.affect
SELECT @NO_AFFECT_LIEU:=@NO_AFFECT_LIEU+1, 
       CO_AFF, 
       DT_AVI_AFF, 
       DS_STA_AFF, 
       CO_STA_AFF, 
       NO_BRA_EVN, 
       NO_PERS, 
       @NEWEVEN, 
       NO_EQU, 
       NO_LIE, 
       NO_PERS_RES, 
       IN_LUN, 
       IN_BAN,
       DS_HEB,
       IN_HEB_JEU, 
       IN_HEB_VEN, 
       IN_HEB_SAM, 
       NO_BOR, 
       NO_TUL_CAH, 
       NB_SPEC
FROM affect
WHERE NO_EVEN = event_to_duplicate;

INSERT INTO db_rallye.lieu
SELECT NO_LIE, 
       @NEWEVEN, 
       CO_LAT, 
       CO_LON, 
       FI_IMA, 
       FI_CRO, 
       FI_TUL, 
       DS_LIE, 
       DS_COU, 
       DS_LON, 
       NB_BLK,
       VL_KM, 
       IN_FUS,
       VL_DIS_FUS, 
       NO_LIE_FUS_SUI
FROM lieu
WHERE NO_EVEN = event_to_duplicate;

SET @NO_AFFECT_TACHE = (SELECT MAX(NO_TAC) from db_rallye.tache);
INSERT INTO db_rallye.tache
SELECT @NO_AFFECT_TACHE:=@NO_AFFECT_TACHE+1, 
       NO_LIE, 
       @NEWEVEN, 
       NO_AFF, 
       DS_REP, 
       DS_TAC
FROM tache
WHERE NO_LIE IN 
    (SELECT NO_LIE FROM lieu WHERE NO_EVEN = event_to_duplicate);
姆拉德森

如果很多事件都包含与我相似的信息,那么我将创建一个模板(或包含模板以及创建/修改模板的功能),其中包含您将要复制的所有信息。

然后,在创建新事件时,他只能选择一个开始模板,然后仅添加该事件唯一的任何数据。我认为,这比不断复制数据要好得多。

至于如何复制一行和所有关联的行,这完全取决于您的数据库架构以及表之间的关系。如果您发布其中的相关部分,我们可以为您提供更多帮助。

编辑

以下是我提出的查询,请先在开发数据库中对其进行测试,但我认为它们会起作用。让我知道。祝你好运!

INSERT INTO `event`
SELECT NULL NO_EVE, 
       NM_EVE, 
       AN_EVE, 
       DT_EVE, 
       NM_REG_EVE
FROM `email_log`
WHERE id NO_EVE = id_of_event_to_duplicate

INSERT INTO `affect`
SELECT NULL NO_AFF, 
       CO_AFF, 
       DT_AVI_AFF, 
       DS_STA_AFF, 
       CO_STA_AFF, 
       NO_BRA_EVN, 
       NO_PERS, 
       NO_EVEN, 
       NO_EQU, 
       NO_LIE, 
       NO_PERS_RES, 
       IN_LUN, 
       IN_BAN, 
       DS_HEB_JEU, 
       IN_HEB_VEN, 
       IN_HEB_SAM, 
       NO_BOR, 
       NO_TUL_CAH, 
       NB_SPEC
FROM `affect`
WHERE NO_EVE = id_of_event_to_duplicate

INSERT INTO `lieu`
SELECT NULL NO_LIE, 
       NO_EVEN, 
       CO_LAT, 
       CO_LON, 
       FI_IMA, 
       FI_CRO, 
       FI_TUL, 
       DS_LIE, 
       DS_COU, 
       DS_LON, 
       DB_BLK,
       VL_KM, 
       IN_FUS,
       VL_DIS_FUS, 
       NO_LIE_FUS_SUI
FROM `lieu`
WHERE NO_EVEN = id_of_event_to_duplicate

INSERT INTO `tache` 
SELECT NULL NO_TAC, 
       NO_LIE, 
       NO_EVEN, 
       NO_AFF, 
       DS_REP, 
       DS_TAC
FROM `tache`
WHERE NO_LIE IN 
    (SELECT NO_LIE FROM `lieu` WHERE NO_EVEN = id_of_event_to_duplicate)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL查询以获取表中所有相关ID位于数组中的所有不同单词

删除具有主键的表中的行以及具有外键的不同表中的相关行

如何从具有不同ID的重复父类中获取所有文本内容?

SELECT *以及与同一表的另一列的ID相关联的所有行

golang gorm选择所有不在相关表中的内容

为其他表中的每个唯一 ID 重复左表中的所有行

更新所有重复ID的jQuery中的html内容

选择表1中的所有行,以及表2中不在表1中的行

SQLite:从一个表中选择所有具有与不同表中 ID 匹配的 ID 的行

如何选择一个具有其他列最大值的列,以及另一个表中该列的所有对应行?

Postgres多对多关系:从相关表中查找所有与一组行相关的行

如何从表中的所有列中选择所有重复行的所有出现?

如何从具有许多不同关系的表中删除并删除项目和所有相关?

选择具有最大重复项的行以及mysql中的不同数据

如何根据引用表中是否包含来自不同列的另一个 ID 的至少一个实例来选择该 ID 的所有实例?

选择所有相关表中没有值的记录的行

为什么->模型方法中的最新方法从相关表中读取所有行?

列出MySQL中具有不同ID的所有重复名称

插入的行 id 大于表中的所有条目

PHP MySQL:显示给定表中的所有列名以及任何给定行的值

如何在水晶报告中显示所有行重复和取消重复的 id?

如何为另一个表中的所有组重复表中的所有行?

出现表中的ID以及另一个表中的所有元素的最佳方法

SELECT 一个表的一行,以及另一个表中的所有行

遍历具有相同id的所有行,并在不同的表中找到匹配的值

在laravel中查询相关模型中表的所有内容

当相关表使用多对一关系时,是否有一种方法可以使用Power BI中相关表的内容来过滤表的行?

匹配角色,但不包括该角色以及之后的所有内容

删除最后一个斜杠以及该MySQL查询之后的所有内容