我有3个数据库,现在我需要将每个数据库中的几个表连接到singel查询中。我该怎么做呢?
这是我的联系:
try { $con_options = array( PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // _SILENT (pub) || _WARNING || _EXCEPTION (dev) ); $con_1 = new PDO('mysql:host=localhost; dbname=database_1', 'user_1', 'pass_1', $con_options); $con_2 = new PDO('mysql:host=localhost; dbname=database_2', 'user_2', 'pass_2', $con_options); $con_3 = new PDO('mysql:host=localhost; dbname=database_3', 'user_3', 'pass_3', $con_options); } catch (PDOException $err) { // catch, record/log and do stuff with errors }
我有3个不同的用户,每个数据库都有一个唯一的密码。一个数据库存储用于facebook应用程序和其他iframe应用程序的应用程序数据。另一个保存所有网店数据,例如产品,订单,客户等,而第三个保存网站结构和内容。
现在; 我想以JOIN某种方式将它们三个一起放在一个查询中。
JOIN
当我写这个问题时;我得到的一个想法是让另一个“超级”用户可以访问所有三个数据库,并且只是进行regoular多表查询?那是可以接受的解决方案吗?
如果是这样,我是否还要在查询中指定哪个数据库?
您将需要一个有权访问所有三个数据库的用户。
您将通过指定完整的表名将它们连接在一起,如下所示:
SELECT * FROM database_1.logs AS d1 LEFT JOIN database_2.users AS d2 ON d1.username = d2.username ORDER BY d1.timestamp DESC LIMIT 10