繁体   English   中英

php sql将来自不同数据库的多个表连接在一起

[英]php sql join together multiple tables from different databases

我有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-apps和其他iframe应用程序的应用程序数据。 另一个包含所有网店数据,如产品,订单,客户等,而第三个包含网站结构和内容。

现在; 我想以某种方式在一个查询中将它们中的三个一起JOIN

我正在写这个问题; 我得到的一个想法是让另一个“超级”用户可以访问所有三个数据库并只进行一次多表查询? 这是一个可接受的解决方案吗?

如果是这样,我是否必须在查询中指定哪个数据库?

您将需要一个可以访问所有三个数据库的用户。

您将通过指定完整的表名来加入它们,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM