gpt4 book ai didi

mysql - 数据库 : Importing data from other tables to another tables

转载 作者:行者123 更新时间:2023-11-29 00:12:29 25 4
gpt4 key购买 nike

这是我的数据库 groupofficecom My Database

我正在将元素从 source 导入到 cal_eventscf_cal_events。数据库有一些我无法更改的规则:

  • cal_events.id 是 PRIMARY KEY 并且有 AUTO_INCREMENT
  • cf_cal_events.model_id 是 PRIMARY KEY 并且 NOT 有 AUTO_INCREMENT
  • cf_cal_events.model_id = cal_events.id
  • ID_ELEMENT 是 VIEW source
  • 的 PRIMARY KEY
  • cf_cal_events.col_10 = source.ID_ELEMENT

我正在尝试执行一个查询,定期将 source 中的元素添加到 cal_eventscf_cal_events 中,因此它需要应用以下内容:

  1. INSERT 新事件(元素)INTO 两个表,考虑到:

    • cal_events.id 是自动递增的,cf_cal_events.model_idcal_events.id 获取其值,如上图所示。
    • source 和目标之间的关系是通过 cf_cal_events.col_10 列。
  2. UPDATE 事件源数据库中的更改。

  3. DELETE 源数据库中删除的事件(源数据库中有参数tinyint列ASUPPRIMER='1')

    <

我不是在要求别人做我的工作,我是在寻求帮助解决我在代码中遇到的问题:

  1. 我能够将新项目插入到 cal_events,但我无法将项目插入到 cf_cal_events(结果都是重复项) .这些是我的尝试。

    WHERE cf_cal_events.model_id = cal_events.id

    INNER JOIN cf_cal_events
    ON cf_cal_events.model_id = cal_events.id

    都返回空结果

  2. 当我执行查询时,由于列的 AUTO_INCREMENT,它再次 添加了元素,但使用了新的 id。问题是我无法使用 REPLACE INTOON DUPLICATE KEY UPDATE,因为 PRIMARY KEY 必须相同才能正常工作。

这是一个 SQL Fiddle我的数据库。谢谢大家!

这是我的插入代码:

INSERT INTO groupofficecom.cal_events (
calendar_id,
user_id,
start_time,
end_time,
name,
description,
location,
ctime,
mtime,
muser_id,
status
)
SELECT '5' AS calendar_id,
'3' AS user_id,
UNIX_TIMESTAMP(source.DATEDEBUT),
UNIX_TIMESTAMP(source.DATEFIN),
CONCAT(source.C219PRNOM,' ',source.C218NOM),
source.TYPEACTIONS,
source.C222LIEU,
UNIX_TIMESTAMP(source.CREATEDATE),
UNIX_TIMESTAMP(source.MODIF_DATE),
'',
'CONFIRMED' AS status
FROM source;

INSERT INTO groupofficecom.cf_cal_events (
model_id,
col_4,
col_5,
col_6,
col_7,
col_8,
col_9,
col_10
)
SELECT groupofficecom.cal_events.id,
source.C221CODECLIENT,
'' AS col_5,
'0' AS col_6,
source.C218NOM,
source.C219PRNOM,
source.TYPEACTIONS,
source.ID_ELEMENT
FROM source, groupofficecom.cal_events
INNER JOIN cf_cal_events
ON groupofficecom.cf_cal_events.model_id = groupofficecom.cal_events.id;

第一个 INSERT 工作正常,但另一个返回空结果

最佳答案

SELECT groupofficecom.cal_events.id,
source.C221CODECLIENT,
'' AS col_5,
'0' AS col_6,
source.C218NOM,
source.C219PRNOM,
source.TYPEACTIONS,
source.ID_ELEMENT
FROM source
INNER JOIN groupofficecom.cal_events
ON groupofficecom.cal_events.calendar_id = 5
AND groupofficecom.cal_events.user_id = 3
AND groupofficecom.cal_events.start_time = UNIX_TIMESTAMP(source.DATEDEBUT)
AND groupofficecom.cal_events.end_time = UNIX_TIMESTAMP(source.DATEFIN)
...
LEFT JOIN cf_cal_events
ON groupofficecom.cf_cal_events.model_id = groupofficecom.cal_events.id
WHERE groupofficecom.cf_cal_events.model_id IS NULL

这是您对 cf_cal_events 的插入查询。您必须从源连接到 cal_events 并附带条件,您如何迁移数据,以获取您之前插入的 cal_events 行。然后你必须加入到model_id上面的cf_cal_events才能得到这些cal_events,这些cal_events在cf_cal_events中还没有引用。最后,您必须选择 cal_events.id 作为 cf_cal_events 的 model_id。

关于mysql - 数据库 : Importing data from other tables to another tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com