如何从不同的数据库中连接两个表?

时间:2014-10-21 13:49:44

标签: php mysql

数据库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:工作站

我只有READ权限

+----------------------------+
|   ID  |       ws    |  pod |
+----------------------------+
|    1  |  COMP123  |  A07   |
|  2    |  COMP345  |  B20   |
|  3    |  COMP567  |  C03   |
|  4    |  COMP891  |  D14   |
|  5    |  COMP444  |  E09   |
+----------------------------+

问题:

我对该数据库的第二个表只有READ权限。

我想加入两个表格,以便我可以显示" ws"我的PHP脚本在屏幕上的字段。 我的" station_number"字段值的编写方式与" pod"不同。领域 (如果字母后面有一个数字,那么它们在字母前面为零)是否会产生影响?

我已经在网上看过如何加入的例子,但出于某种原因,我无法让它发挥作用。

我是否需要在主表上创建一个额外的字段来存储来自" ws"的字段值。或者是什么?我有点困惑。

提前致谢!

1 个答案:

答案 0 :(得分:1)

是的,如果其中一个为0而另一个为0则会有所不同。您必须修改其中一个的值。类似于SUBSTR(station_number, 0, 1) + LPAD(SUBSTR(station_number, 2), 2, '0')

要从不同的数据库加入表,您只需将数据库名称放在表名前面。可能类似于sandbox.coordinates

因此,您的查询可能如下所示:

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