连接来自两个不同数据库的 3 个表?

Posted

技术标签:

【中文标题】连接来自两个不同数据库的 3 个表?【英文标题】:Joining 3 tables from two different Databases? 【发布时间】:2014-10-27 15:46:12 【问题描述】:

数据库 1(2 个表):sandbox_maesc4

表1:坐标

+----------------------------------------+
|coord_id | section_name | station_number|
+----------------------------------------+
|   1     |    A         |  A7           |
|   2     |    B         |  B20          |
|   3     |    C         |  C3           |
|   4     |    D         |  D14          |
|   5     |    E         |  E9           |
+----------------------------------------+

表 2:workstation_userlogged

+----------------------------------+
|  id     |    ws         |  user  |
+----------------------------------+
|   1     |    COMP123    |  ryan  |
|   2     |    COMP345    |  luda  |
|   3     |    COMP567    |  chris |
|   4     |    COMP891    |  michel|
|   5     |    COMP444    |  isabel|
+----------------------------------+

数据库 2(1 个表):softphone_materials_updater

表 1:工作站

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

问题:

我在数据库 2 中只有读取权限。 所以我对这两个字段进行了 SELECT 查询并创建了“userlogged”表。

现在,我想通过加入表“工作站”来合并两个表“坐标”和“用户登录” 与它们的“station_number”字段和“pod”字段的关系。我怎样才能做到这一点?以下是我尝试过但不起作用的查询。

我在“坐标”表中有额外的字段(带有实际坐标的 X、Y 字段)。在 php 中,我使用所有字段在屏幕上显示它们。

SELECT 
  coordinate_id, 
  section_name, 
  x_coord, 
  y_coord, 
  ws.username, 
  ws.hostname, 
  w.pod, 
FROM 
  sandbox_maesc4.coordinates c, 
  sandbox_maesc4.workstation_userlogged ws
INNER JOIN
  softphone_materials_updater.workstations w
  ON c.station_number = w.pod

【问题讨论】:

究竟是什么没用? 查询没有选择我要显示的字段 【参考方案1】:

我想这也许就是你想要的?

SELECT 
  coordinate_id, 
  section_name, 
  x_coord, 
  y_coord, 
  wsu.username, 
  wsu.hostname, 
  w.pod 
FROM 
  sandbox_maesc4.coordinates c  
INNER JOIN
  softphone_materials_updater.workstations w
  ON c.station_number = w.pod
INNER JOIN
  sandbox_maesc4.workstation_userlogged wsu
  ON w.ws = wsu.ws

不确定数据库和表名,它们似乎在您的示例查询和描述之间有所不同。

【讨论】:

我更新了名称和所有内容。您给我的查询仍然不起作用。坐标表有“x_coord”和“y_coord”字段,我没有包括在图中。再次感谢 当你说它不起作用时,问题是什么?你得到一个错误还是你没有得到正确的结果?在您的表描述中似乎没有任何 usernamehostname 列,也许它应该是 wsu.user as usernamewsu.ws 作为主机名 ? 实际上我只是让它工作,在 w.pod 之后有一个额外的“,”。我刚刚将查询修改为所需的内容。非常感谢!

以上是关于连接来自两个不同数据库的 3 个表?的主要内容,如果未能解决你的问题,请参考以下文章

Java - 合并来自不同数据源中的 2 个表的数据

在 MSSM 中使用标量值函数和来自 2 个表的数据

Mysqli 连接来自 2 个不同数据库的表

您如何连接来自其他表或我的第 5 个表上的用户输入的数据?

左连接计数来自第二个表的三个属性

连接来自不同数据库的两个表