Php 如何连接来自不同数据库的两个表?
数据库1:沙箱 表1:坐标Php 如何连接来自不同数据库的两个表?,php,mysql,Php,Mysql,数据库1:沙箱 表1:坐标 +----------------------------------------+ |coord_id | section_name | station_number| +----------------------------------------+ | 1 | A | A7 | | 2 | B | B20 | | 3 | C
+----------------------------------------+
|coord_id | section_name | station_number|
+----------------------------------------+
| 1 | A | A7 |
| 2 | B | B20 |
| 3 | C | C3 |
| 4 | D | D14 |
| 5 | E | E9 |
+----------------------------------------+
数据库2:电话
表2:工作站
我只有阅读特权
+----------------------------+
| ID | ws | pod |
+----------------------------+
| 1 | COMP123 | A07 |
| 2 | COMP345 | B20 |
| 3 | COMP567 | C03 |
| 4 | COMP891 | D14 |
| 5 | COMP444 | E09 |
+----------------------------+
问题:
我只有那个数据库的第二个表的读取权限
我想连接这两个表,以便在屏幕上显示PHP脚本的“ws”字段。
我的“站号”字段值与“pod”字段的写入方式不同
(如果字母后面是个位数,则字母前面有一个零)这有区别吗
我在网上看到了一些关于如何加入的例子,但由于某些原因,我无法让它发挥作用
我需要在主表上创建一个额外的字段来存储“ws”中的字段值吗?我有点困惑
提前谢谢 是的,如果一个中有0,而另一个中没有,则会产生不同。您必须修改其中一个的值。类似于
SUBSTR(站号0,1)+LPAD(SUBSTR(站号2,2,0')
要连接来自不同数据库的表,只需将数据库名称放在表名称前面。可能类似于沙盒坐标
因此,您的查询可能如下所示:
SELECT
*
FROM
sandbox.coordinates c
INNER JOIN phone.workstations w
ON (SUBSTR(c.station_number, 0, 1) + LPAD(SUBSTR(c.station_number, 2), 2, '0')) = w.pod
如果您可以更新其中一个表以使列匹配,则查询非常简单:
SELECT
*
FROM
sandbox.coordinates c
INNER JOIN phone.workstations w
ON c.station_number = w.pod
只需在要加入的表名之前添加数据库名即可<代码>。。。在db1.table1.column1=db2.table1.column1上左键连接db2.table1代码>两者之间的关系是什么?是的。这会有所不同。@KouberSaparev station_编号和podI请参见,因此我将更新我的表格以包含零。谢谢,这不是从…中选择ws,pod吗。。。如果我想显示ws字段及其匹配的桩号?谢谢,最好指定您想要的实际列,而不是只使用
SELECT*
。如果这些是您想要的列,那么您可以使用选择w.ws,w.pod FROM…
。联接的目的是仅选择在坐标表中具有相应项的行吗?如果是这样,那就很好了,但我问你,因为如果不是这样,你就不会从表中选择任何行,也不会在表中做任何进一步的筛选(除了确保它存在)。很好地解释,谢谢你的帮助,它帮助我理解并按照我的要求工作!:D