如何在两个mySQL表之间创建“链接”?

时间:2011-05-19 22:27:53

标签: php mysql database-design field

我有两张看起来如下的表:

人(表名)

Name1 / Phone1 / Email1 / Address1 / Organization1 / Notes1(Fields)

组织(表名)

Organization1 / Phone2 / Email2 / Address2 / Web2 / Notes2(Fields)

Organization1是两个表之间唯一的共同字段。

当我在一个人上显示数据时,我还要检查并查看其组织中是否有数据并显示它是否存在。我正在使用PHP与mySQL进行交互。

4 个答案:

答案 0 :(得分:3)

您需要JOIN表格。

SELECT * FROM Person LEFT JOIN Organization ON Person.Organization = Organization.Name;

这假设关系是组织名称。我已经完成了LEFT JOIN,因为你说如果存在。有关加入表格的详细信息,请查看this tutorial

注意:我同意并建议您通过添加主键并在其他表中将它们用作外键来使您的数据库更具关系性。

答案 1 :(得分:2)

您应该使用foreign key,但需要use the InnoDB storage engine(MyISAM尚不支持外键)。

答案 2 :(得分:2)

这篇文章是对关系的解释,而不是您使用的代码。如果你想要,那就去别处看看
那么,表之间的连接称为关系。有三种关系。

1)一个 - >一 - 这种类型的关系意味着1行与另一个表中的另一行相关

2)一个 - >许多 - 这种类型的关系意味着1行与不同表中的可变行数相关 一个例子可能是一个文件夹可以有多个文件,但一个文件不能有多个文件夹。所以在这种情况下,1将是文件夹,而许多将是文件。

3)许多 - >许多 - 这种类型的关系意味着许多行可以与许多其他行相关 一个例子可能是标签。您可以标记许多相同名称的东西(例如桌面设备),每个东西可以有多个标签(一盏灯可以同时具有桌面设备和灯光标签)。


所以既然你知道了不同的​​关系,我们就会回答你的问题。你所关注的关系是一对多,一个公司可以有很多人,但一个人只能有一个公司。我想一个人可以为多人工作,但这要复杂得多(所以我们会跳过它)。

到目前为止,一对多关系是最常见的,并且很容易做到。这是连接的来源(左,右和内连接)。 Tizag有一个关于加入的优秀教程:http://www.tizag.com/sqlTutorial/sqljoin.php

希望有所帮助。

答案 3 :(得分:0)

让你的表看起来像这样:

Person_ID,姓名,电话,电子邮件,地址,Organisation_ID,备注(或者如果您有多个备注,请创建一个单独的表格,将person_id映射到备注)。

Organisation_ID,姓名,电话,电子邮件,地址,网络,便笺。

选择您的人,然后如果Organisation_ID存在,请选择Organisation_ID等于您从人员行获取的ID的组织。