MySQL查询更新多个表

时间:2011-12-24 08:04:16

标签: mysql multiple-tables

我有一个联系人管理系统和我的联系人的sql转储,其中包含五到六列数据我要导入到三个特定的表中。想知道最好的方法是什么。我已经上传了sql dump ...它现在是我的联系人管理数据库中的一个表。

crm中的表在公司表中只需要contactID ...并在歌曲表中:

  • companyID,
  • 的ContactID,
  • 添加日期(不是必需的)和
  • 备注(不是必需的)

然后是第三个表,联系表只需要contactname。

我已经将数据上传到三个表中的每个表(不确定我的订单是否正确)但现在需要更新并匹配第四个表(最初是sql dump)中的数据与其他三个表并更新一切都有其独特的标识符。

表结构:

+DUMP_CONTACTS

id <<< I dont need this ID, the IDs given to each row in the CRM are the important ones.

contact_name

company

year

event_name

event_description

====Destination Tables====

+++CONTACTS TABLE++

*contactID < primary key

*contact_name

+++COMPANIES TABLE+++

*companyID < primary key

*name

*contact_ID

*year

++++Events++++
*EventID < primary key

*companyID

*contactID

*eventname

*description

1 个答案:

答案 0 :(得分:0)

您的帖子中有部分我仍然不明白,所以我会给你SQL,然后你可以在测试环境中运行它们,我们可以从那里开始和/或回去开始再次:

-- Populate CONTACTS_TABLE with contact_name from uploaded dump
INSERT INTO CONTACTS_TABLE (contact_name)
SELECT contact_name FROM DUMP_CONTACTS

-- Populate COMPANIES with information from both CONTACTS_TABLE + dump
INSERT INTO COMPANIES (name, contact_ID, year)
SELECT d.company, c.contactID, d.year
FROM DUMP_CONTACTS AS d
    INNER JOIN CONTACTS_TABLE AS c
    ON d.contact_name = c.contact_name

-- Populate SONGS_TABLE with info from COMPANIES
INSERT INTO SONGS_TABLE (companyID, contactID)
SELECT cm.companyID, cm.contact_ID
FROM COMPANIES AS cm

-- Populate Events with info from COMPANIES + dump
INSERT INTO Events (companyID, contactID, eventname, description)
SELECT cm.companyID, cm.contact_ID, d.event_name, d.event_description
FROM DUMP_CONTACTS AS d
    INNER JOIN COMPANIES AS cm
    ON d.company = cm.name

我首先填充CONTACTS_TABLE然后,因为contactID中的记录需要COMPANIES,所以插入CONTACTS_TABLE加入转储的记录。 SONGS_TABLE直接从COMPANIES获取数据,最后Events通过加入COMPANIES和转储来获取数据。