我试图弄清楚如何使用另一个表中的组引用来扩展company_ids表。对于给定的company_name,我想获取其company_ids,将它们与company_groups表连接,并获取它们的group_ids。从那里,我想让每个company_id与group_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_ids。
+----------+------------+
| group_id | company_id |
+----------+------------+
| 227 | 647552 |
| 227 | 111743 |
| 227 | 111842 |
+----------+------------+
我想将company_name与多个group_ids匹配,然后查找与该组关联的所有company_ids。然后将新的company_ids插入到公司表中,如下所示:
+--------------+------------+
| company_name | company_id |
+--------------+------------+
| Tesla | 647552 |
| Tesla | 927572 |
| Tesla | 748563 |
| Tesla | 111743 |
| Tesla | 111842 |
+--------------+------------+
答案 0 :(得分:0)
当where子句中出现相同的表名时,无法插入表中。
您可以使用临时第三个表来完成此项工作
第二个想法,你的问题要么有趣还是不够清楚,请提供你的样本数据,以便我可以更新我的答案
答案 1 :(得分: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;