假设我有一个表,其功能是专门针对 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/