Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以用PHP代码连接两个查询结果吗?_Php_Mysql_Sql_Sql Server - Fatal编程技术网

可以用PHP代码连接两个查询结果吗?

可以用PHP代码连接两个查询结果吗?,php,mysql,sql,sql-server,Php,Mysql,Sql,Sql Server,我需要为我的web应用程序中的报告模块加入两个表(比如用户&订单表) 问题是: User表位于不同的服务器和服务器上 数据库管理系统从顺序表中。从技术上讲,它是一个不同的系统,因此User表位于SQL Server DB上,而Order表位于MySQL DB上 我无法使用SQL Server的链接服务器,因为我的公司策略不允许使用它。因此,我不能用SQL代码直接连接它们。他们希望我使用Web服务而不是链接服务器 来自这些表的JOIN操作的结果有大量行(可能超过10000行,因为数据用于报告)。所

我需要
为我的web应用程序中的报告模块加入两个表(比如
用户
&
订单
表)

问题是:

  • User
    位于不同的服务器和服务器上 数据库管理系统
    顺序
    表中。从技术上讲,它是一个不同的系统,因此
    User
    表位于SQL Server DB上,而
    Order
    表位于MySQL DB上

  • 我无法使用SQL Server的链接服务器,因为我的公司策略不允许使用它。因此,我不能用SQL代码直接连接它们。他们希望我使用Web服务而不是链接服务器

  • 来自这些表的
    JOIN
    操作的结果有大量行(可能超过10000行,因为数据用于报告)。所以,我认为使用Web服务映射它们是一件可怕的事情

  • 所以我想到了这个:

    我从不同的模型中收集了2个查询结果,并将它们与我的应用程序代码连接起来(我使用的是带有CodeIgniter的PHP):

    $userData
    包含具有以下列的所有用户实体:

    [UserId, Username, Address, PhoneNumber, etc..]
    
    [OrderId, UserId, Date, etc..]
    
    $orderData
    包含具有以下列的所有订单实体:

    [UserId, Username, Address, PhoneNumber, etc..]
    
    [OrderId, UserId, Date, etc..]
    
    但是有可能在PHP/CodeIgniter中连接这两个查询结果吗

    大量数据的性能如何

    我应该按照建议使用Web服务,还是有其他解决方案来实现这一点


    提前感谢:)

    需要考虑的几件事:

  • 您真的需要一次性返回所有用户和订单记录吗
  • 是否确实要返回这两种类型记录的所有行
  • 对于这些报表查询,使用报表模块会更好吗
  • 纯SQL语法是否比使用CodeIgniter“Active Record”(在3.0中重命名为Query Builder)来填充更聪明
  • JOIN
    真的那么糟糕吗?它不是一个
    联合体
    ,您希望数据相关 我建议您限制数据返回,
    仅选择实际需要的字段,创建一个新的报表模型,以避免试图弄乱您的通用模型,并使用原始SQL执行此操作


    如果您试图严格遵守“1表=1模型”和“用户::getAllFoos+控制器处理>报告::getMonthlyOrderStats()”等规则,那么复杂的事情就会变得更加复杂。

    谢谢您的回答。1.是的,因为我需要将所有报告摘要导出到Excel。2.不,因为我只需要有订单的用户。3.是的,最好有一个单独的模块。4.是的,普通SQL当然会很棒。但是,我无法获得直接SQL,因为该表是在不同的DBM之间分离的。5.不,不是。但问题不在于SQL连接性能本身。问题是如何在没有直接SQL的情况下执行联接?哦。然后映射一个用户ID数组,并遍历所有内容。如果由于不同的服务器是不同的引擎,您无法使用SQL来解决此问题,那么foreaches是您唯一的实际选择。可以从MsSQL数据库读取数据并插入MySQL临时表,然后将其连接到您感兴趣的MySQL表中?哦,是的,似乎有可能。。。我从SQLServer查询中得到一个数组,然后将它插入MySQL表中。我应该为每一行循环并逐个插入还是如何插入?取决于数量。可能最容易循环构建要插入的批(因此一次插入几百行),因为这样效率更高。