2016-01-21 72 views
2

我想弄清楚如何使用另一個表中的組引用來擴展company_ids表。對於給定的company_name,我想獲取其company_ids,將其與company_groups表連接起來,並獲取其group_ids。從那裏,我想獲取與group_id關聯的每個company_id,並將它們插入公司表中並帶有正確的company_name。插入表中的連接數據

該結構有點不典型。一個公司名稱可以有多個ID,因爲該ID不會用作單個公司的唯一標識符。我試圖確保他們所有人都被複制到公司表中。我確定有一個相當簡單的連接命令,但我從來沒有很擅長在自己內部連接表。誰能幫忙?謝謝!

+---------------+ 
| companies | 
+---------------+ 
| company_id PK | 
| company_name | 
+---------------+ 

+----------------+ 
| company_groups | 
+----------------+ 
| company_id PK | 
| group_id  | 
+----------------+ 

下面是一個例子。在公司表中,我有「特斯拉」公司,有三個不同的ID。

+--------------+------------+ 
| company_name | company_id | 
+--------------+------------+ 
| Tesla  |  647552 | 
| Tesla  |  927572 | 
| Tesla  |  748563 | 
+--------------+------------+ 

在company_groups表中,每個group_id都有一個或多個company_id。

+----------+------------+ 
| group_id | company_id | 
+----------+------------+ 
| 227  |  647552 | 
| 227  |  111743 | 
| 227  |  111842 | 
+----------+------------+ 

我想將company_name與多個group_ids匹配,然後查找與該組關聯的所有company_id。新company_ids將隨後在公司表中插入這樣的:

+--------------+------------+ 
| company_name | company_id | 
+--------------+------------+ 
| Tesla  |  647552 | 
| Tesla  |  927572 | 
| Tesla  |  748563 | 
| Tesla  |  111743 | 
| Tesla  |  111842 | 
+--------------+------------+ 
+0

在您的公司表中,您有一家公司有幾個company_Id?你可以更新你的問題,並把你的意思樣本。不只是表格的描述。 – SergeyAn

+0

我添加了一個例子。希望現在會更清楚一點。 – Rachie

回答

0

我想到了。嵌套查詢效果很好:

REPLACE INTO companies (company_name, company_id) 
SELECT a.company_name, company_groups.company_id 
FROM 
(
SELECT group_id, company_groups.company_id, companies.company_name 
FROM companies 
JOIN company_groups 
ON companies.company_id=company_groups.company_id 
GROUP BY group_id 
) a 
JOIN company_groups 
ON company_groups.group_id=a.group_id 
GROUP BY company_id; 
0

當同桌的名字出現在WHERE子句中不能插入表中。

您可以使用一個臨時的第三個表做這個工作

在第二個想法,你的問題是,無論是搞笑還是不夠清晰,請提供您的樣本數據,這樣我可以更新我的答案