如何对由另一个表链接的两个表执行 MySQL 选择查询

kam*_*lot 5 mysql sql database select

假设我有一个表,其功能专门用于根据 OOP 链接另外两个表。

假设我有两张表:一张是人名,另一张是电话号码:

Table 1:
id   person's name
1    John
2    Smith

Table 2:
id   Phone number
5     23424224
6      23424242
Run Code Online (Sandbox Code Playgroud)

然后我有第三个表格,链接此人及其各自的电话号码:

Table 3:
id    person-id    phone-number-id
1         1           5
2         2           6
Run Code Online (Sandbox Code Playgroud)

因此,约翰的电话号码是 23424224,而史密斯的电话号码是 23424242。

我想运行一个 SQL 查询来从表 1 中获取所有电话号码以(234)开头的人。

我将如何在此表结构中链接选择查询……我将运行什么查询?

Jon*_*tte 4

首先,创建该表的唯一原因是如果您具有多对多关系。一个人可以拥有多个电话号码,但一个电话号码真的可以拥有多个人吗?如果这是真的,那么您的模式实现了该要求,但这对我来说似乎有点过度设计:-)

其次,这是一个相当简单的连接。您要做的就是首先选择有问题的电话号码,然后从第三个表中选择人员 ID,然后从第一个表中选择姓名。就像是:

从 table1 t1、table2 t2、table3 t3 中选择 t1.name 作为名称,t2.number,其中 t2.number 如 '234%' 且 t3.personid = t1.id 且 t3.phoneid = t2.id;

如果您需要外连接语义(包括某些带有 NULL 的字段),您还可以将“blah.id = blah.id”重写为连接。