[英]MySQL Query Update Multiple Tables
我有一個聯系人管理系統和一個帶有五六列數據的聯系人的sql轉儲,我想將其導入三個特定的表中。 想知道解決此問題的最佳方法是什么。 我已經在我的聯系人管理數據庫中上載了sql dump ...它的單個表。
crm中的表僅在companys表中需要contactID ...,而在songs表中則需要:
然后是第三個表,即僅需要聯系人姓名的聯系人表。
我已經將數據上傳到三個表中的每個表(不確定我的命令是否正確),但是現在需要將第四個表中的數據(最初是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
您的帖子中有些部分我仍然不了解,因此我將向您提供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
,然后,由於COMPANIES
記錄需要使用contactID
,因此請從CONTACTS_TABLE
插入記錄以加入轉儲。 SONGS_TABLE
直接從COMPANIES
獲取數據,最后, Events
通過將COMPANIES
和轉儲結合起來獲取其數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.