2011-12-24 801 views
2

我有一个联系人管理系统和我的联系人的sql转储五六列数据,我想导入到三个特定的表。想知道最好的方法是什么。我已经在我的联系人管理数据库中上传了SQL转储...其单个表格。MySQL查询更新多个表

在CRM中的表需要在公司表只有...的ContactID和歌曲表:

  • companyID,
  • 的ContactID,
  • 添加日期(非必需)和
  • 笔记(不需要)

然后有第三个表,即联系表,它只需要contactname。

我已经将数据上传到三个表中的每一个(不确定我的订单是否正确),但现在需要更新第四个表(最初是sql转储)中的数据并将其与其他三个用其唯一标识符更新所有内容。

表结构:

+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 
+0

到目前为止试过了什么? – Nonym 2011-12-24 08:05:51

+0

不确定要尝试的是什么......我现在在联系人表中有联系人ID和联系人姓名。然而,不知道我怎么会得到contactID到公司表中,而不使用我的原始联系人的第四张表呢?我想我可以添加另一列公司名称的联系人表,但即使...我从哪里去。看起来像MATCHAGAINST可能需要使用/学习?任何在这里查询的帮助都会很棒。 – lcm 2011-12-24 08:24:39

+0

你可以尝试修改你的文章,并包括源表和目标表的表结构..并指出哪个列应该去哪里,以及表之间的关系 – Nonym 2011-12-24 08:28:26

回答

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然后,因为contactIDCOMPANIES需要记录,从CONTACTS_TABLE插入记录加入转储。 SONGS_TABLE直接从COMPANIES获取数据,最后Events通过加入COMPANIES和转储获取其数据。

+0

谢谢...我能够把它放在一起。只是发布了另一个问题,但如果你有时间看。我现在正在处理上面查杀mysql的最后一个查询。 – lcm 2012-01-01 23:53:04