大家好我想通过一个选择从多个数据库中获取数据,我想对其进行排序并应用条件
我有数据库连接保存在我的主数据库中,就像这样
$GLOBALS['connects'] = array();
$GLOBALS['prefixes'] = array();
$sql = mysql_query("SELECT * FROM shops ORDER BY ordering ASC",$connect);
while($data = mysql_fetch_assoc($sql)){
$password = simple_decrypt($data['password']);
$GLOBALS['connects'][$data['database']] = mysql_connect($data['host'],$data['user'],$password) or die ('bad data');
$GLOBALS['prefixes'][$data['database']] = $data['prefix'];
mysql_select_db($data['database'], $GLOBALS['connects'][$data['database']]) or die ('bad select');
}
然后我从全局数组变量
进行查询$query = 'SELECT * FROM ';
$limit = count($GLOBALS['connects']);
$i = 0;
foreach($GLOBALS['connects'] as $key => $val){
if(($i+1)==$limit){
$query .= $key.'.'.$GLOBALS['prefixes'][$key].'orders';
} else {
$query .= $key.'.'.$GLOBALS['prefixes'][$key].'orders, ';
}
$i++;
}
结果是
"SELECT * FROM shop1.pr_orders, shop2.pl_orders, shop3.ps_orders, shop4.pt_orders"
现在我想让它工作也添加WHERE条件和ORDER BY
现在它应该显示每个订单,但它返回false
提示:
让假装从数据库中选择的表格没有共同点
答案 0 :(得分:0)
我们可以说Table1
位于Database1
,而Table2
位于Database2
,您希望join
他们只需SELECT
:
Select * FROM Database1.Table1 JOIN Database2.Table2 ON Table1.Id=Table2.Id
答案 1 :(得分:0)
只有当表位于同一MySQL服务器(同一主机)上的不同数据库中且已连接的用户具有对所有这些表的访问权限时,您构造的SELECT语句才有效。
但据我了解,您正在尝试从驻留在不同MySQL服务器中的表中进行SELECT。事情变得更复杂 - 有关于此的讨论:
另一种方法是分别连接到每个服务器,从表中选择SELECT记录,然后在PHP中手动合并 - 但我不确定是否是你想要的。