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

标签 mysql sql database select

假设我有一个表,其功能是专门针对 OOP 链接另外两个表。

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

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

Table 2:
id   Phone number
5     23424224
6      23424242

然后我有第三个表链接了这个人和他们各自的电话号码:

Table 3:
id    person-id    phone-number-id
1         1           5
2         2           6

因此,John 的电话号码是 23424224,而 Smith 的电话号码是 23424242。

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

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

最佳答案

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

其次,这是一个相当简单的连接。您要做的是首先选择有问题的电话号码,然后从第三个表中选择人员 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”重写为一个连接。

关于mysql - 如何对由另一个表链接的两个表执行 MySQL 选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324265/

相关文章:

php - 计算匹配单词的数量

mysql - 如何使用 Excel 中当前的新数据更新 MySQL 表?

sql - 将 Oracle SQL Select 转换为 PostgreSQL Select

mysql - 如何修复使用的表类型不支持 FULLTEXT 索引而不丢失数据?

sql - 使用p6spy插件配置进行Grails 2.0.4和sql性能分析

sql-server - 本地 SQL Server 到 Azure PostgreSQL 复制

database - Facebook 数据库设计...为什么要有个人资料表?

php - 无法启动apache2的服务

php - 如何使用 PHP 和 MySQL 从表中按日期获取最近 7 天的记录

c++ - 如何使用odbc通过c++将excel文件导入到mysql表中?