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

标签 php mysql sql join pdo

我有 3 个数据库,现在我需要将每个数据库中的多个表连接到单个查询中。我该怎么做?

这是我的连接:

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 在一起。

当我在写这个问题时;我得到的一个想法是让另一个“ super ”用户访问所有三个数据库,然后只做一个常规的多表查询?这是一个可以接受的解决方案吗?

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

最佳答案

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

您将通过指定完整的表名将它们连接在一起,如下所示:

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

关于php sql将来自不同数据库的多个表连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703337/

相关文章:

php - SQL从一个表中拆分逗号分隔列表并根据此列表从第二个表中打印内容

mysql - 保持动态数据库字段的最佳方式?

java - 如何在 MongoDB 中进行分组选择

php - CakePHP 和 Twitter Bootstrap 工具提示

php - Apache/Linux Web 服务器动态阻止传入的 POST 请求

forms - PHPSESSID 任意出现在表单中

mysql - 为什么我无法获取某个日期范围内的记录?

php - MySQL 中使用 PHP undefined variable 的 CONCAT 函数

mysql - 无法更新表格,但选择作品

mysql - 使用 SQL 和 Azure API 获取 Azure 中的前 20 个元素