Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何连接来自不同数据库的两个表?_Php_Mysql - Fatal编程技术网

Php 如何连接来自不同数据库的两个表?

Php 如何连接来自不同数据库的两个表?,php,mysql,Php,Mysql,数据库1:沙箱 表1:坐标 +----------------------------------------+ |coord_id | section_name | station_number| +----------------------------------------+ | 1 | A | A7 | | 2 | B | B20 | | 3 | C

数据库1:沙箱

表1:坐标

+----------------------------------------+
|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