MySQL 查询更新多个表

标签 mysql multiple-tables

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

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

  • 公司编号,
  • 联系方式,
  • 添加日期(非必需)和
  • 备注(非必需)

然后是第三张表,只需要contactname的contact表。

我已经将数据上传到三个表中的每一个(不确定我的顺序是否正确)但现在需要更新并将第四个表(最初是 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

最佳答案

您帖子中的某些部分我仍然不明白,所以我将为您提供 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 获取其数据和转储。

关于MySQL 查询更新多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623462/

相关文章:

mysql - 如何让 MS SQL 创建具有唯一 ID 的 View ?

sql - 我应该使用平面表还是规范化数据库?

mysql - SQL连接两个表的问题

SQL 查找最受欢迎的类别

mysql - 有很多属性的表

mysql - 对 2000 万条以上记录的云数据库的建议?

php - Ajax发布到php来更新mysql

MySQL - 'on clause' 中的未知列

php - 如何对多个表使用带有 group by 的连接语法

database - cakephp数据库表定义三个依赖关系