php mysql 跨库连表查_php – 跨服务器的Mysql查询,不使用联合表

首先,联合表是更好的解决方案(它们是针对您尝试手动完成的那种方式而制作的).但你不想要它们,所以这是下一个最好的事情:

对于比第一个示例更复杂的事情,您应该通过插入表格内容而不是表格来手动模拟远程表格.

我将以这种方式重写你的第一个例子,因为你的第二个例子搞砸了,我甚至不知道你想要在那里表达什么.

使用1台服务器时,您有以下代码:

select name from Enterprise E

inner join Users U on E.cod = U.cod

where E.cod = $my_code and U.codUsers in ($users);

您现在可以将表替换为表的实际数据:

select name from Enterprise E

inner join

( select 1 as cod, 4 as codUsers, 20 as codHistory

union select 2 as cod, 8 as codUsers, 500 as codHistory

union select 3 as cod, 29 as codUsers, 100 as codHistory

) as U

on E.cod = U.cod

where E.cod = $my_code and U.codUsers in ($users);

要做到这一点,你必须将表数据构建为一个字符串(我在这里使用pdo):

foreach($db->query('select * from Users U where U.codUsers in ($users)') as $row) {

if($data !== '') { $data .= 'union '; }

$data .= 'select ' . $row['cod'] . ' as cod, '

. $row['codUsers'] . ' as codUsers, '

. $row['codHistory'] . ' as codHistory ';

}

当然,你必须使它适合你的Users-table的布局(并且不要忘记一些’用于字符串列),并且你可以省略你不需要的列.

您现在可以将该字符串放在您拥有Users-table之前的任何位置,并将您的代码编写为在1台服务器上,因此您的第一个代码看起来像

select name from Enterprise E

inner join ($data) as U on E.cod = U.cod

where E.cod = $my_code and U.codUsers in ($users);

和你的第二个代码(虽然我提醒你,它开始时是破碎的,也不会在1台服务器上运行)看起来像

select e.name, e.datebegin, e.dateend from Enterprise E

leftjoin ( select h.callQuantity, h.history from thirdtable

inner join ($data) as u on e.cod = u.cod

where u.codHistory in (1,2,3)

group by u.cod)

你应该确保只有少量用户进入你的$data-string,然后这将正常工作.否则,您确实需要联合表.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL跨库查询是指在使用MySQL数据库时,通过编写PHP代码实现在不同数据库之间进行查询操作。宝塔控制面板是一种基于Web的服务器管理工具,它提供了简单方便的界面来管理MySQL数据库和PHP代码。 在宝塔控制面板中,我们可以通过登录并选择需要管理的数据库,然后创建相应的和数据。在PHP代码中,我们可以使用MySQL连接函数来连接数据库,并指定要查询的库名和名。在跨库查询时,我们可以使用"database.table"的格式来指定的全名,其中database是数据库名,table是名。 接下来,我们可以使用SQL语句来进行查询操作,例如SELECT语句可以用于检索中的数据。在编写SQL语句时,需要指定名和查询的字段。 当需要在不同的数据库中进行查询时,我们可以通过在SQL语句中使用JOIN语句来实现跨库查询。JOIN语句可以将两个或多个中的数据进行联接,从而实现数据的查询和整合。在跨库查询中,我们需要使用完整的名来指定要联接的。 在编写PHP代码时,我们可以使用MySQLi或PDO等扩展来连接数据库和执行查询操作。首先,我们需要通过连接函数连接到MySQL数据库,然后使用查询函数执行SQL语句,最后通过循环遍历结果集来获取查询结果。 总之,通过宝塔控制面板和PHP代码,我们可以实现MySQL跨库查询,从而方便地在不同数据库之间进行数据查询操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值