关联两个MySQL行


Associate two MySQL rows

这有点令人困惑。我找不到如何用谷歌来形容它,我只是不能把我的头绕在逻辑上这样做。我有"联系人"answers"站点"表,我在数据库中存储数据。我们需要有一个页面显示联系人信息和什么"网站",他们是相关联的,并有一个关于"网站"的信息页面,并显示哪些联系人与之相关联。现在,我有一个"contacts"字段,其中包含与之关联的每个站点的逗号分隔的id;还有一个"sites"字段,其中包含与该站点关联的每个联系人的逗号分隔的id。

当我创建一个带有关联联系人的新站点时。在MySQL中更新联系人行上的"关联站点"字段,同时也更新自己的"关联联系人"字段,逻辑应该如何进行?

我想你说的是多对多关系。

我假设你有一个这样的表设计:

tbl_contacts                tbl_sites
id | full_name              id | label
 1 | John Doe                1 | my website
 3 | Maria Doe               2 | super website

您需要一个表来"链接"这些表。这是一个多对多表:

tbl_contacts2sites
id | contact_id | site_id
 1 |          1 |       2
 5 |          1 |       1
 3 |          3 |       2

所以,John Doe被分配到两个站点,但Maria只分配到"超级站点"。这是设计人际关系的常用方法。对于这种关系,应该避免使用逗号分隔的列表。

最好的解决方案是当您在这个表中创建第三个表(contacts2sites)时,您有三列:id, siteid, contactid。

在此表中,您可以添加站点和联系人之间的所有连接。要查询其中的数据,可以使用对所有表进行连接的mysql查询。

小例子:具有连接

的解决方案