数据库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"的字段值。或者是什么?我有点困惑。
提前致谢!
答案 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