跨多个mysql数据库进行分组和总结

时间:2016-10-30 12:50:59

标签: php mysql join pdo sum

我正在尝试找出这种情况的最佳做法。 我有多个数据库,我想在列上总结它们。可以是一个数据库,也可以是中间的全部或任何给定数字。 商店(数据库)由php数组提供。

最好的做法是在php循环中运行每个数据库查询并通过php添加值吗?我已经开始这样做了,如下所示。

请注意,下面的查询适用于一个数据库,该连接只是该数据库上的另一个表。

我到目前为止的查询和php函数是这个

function getPeriodDateTransactions ($database, $date, $date2, array $stores) {

$username = 'root';
$password = '***';

foreach ($stores as $store_db){

$dsn = 'mysql:host=localhost;dbname='.$store_db;
$db = new PDO($dsn, $username, $password); 

$statement = $db->prepare("
SELECT tr.SoldDate, SUM(tr.TotalAmount) - IFNULL(rebuy.RebuySum, 0) as SumByReceipt,
COUNT(DISTINCT(tr.`ForsNr`)) as TotalCustomers, IFNULL(rebuy.RebuySum, 0) RebuySum
FROM transactions tr   
LEFT JOIN (
SELECT SoldDate, SUM(TotalAmount) as RebuySum
FROM transactions_rebuy
WHERE SoldDate BETWEEN '$date' AND '$date2'
GROUP BY SoldDate
) as rebuy
ON tr.SoldDate= rebuy.SoldDate
WHERE tr.SoldDateBETWEEN '$date' AND '$date2' 
GROUP by tr.SoldDate
ORDER by tr.SoldDate DESC");

$statement->execute();
$row = $statement->fetchALL(PDO::FETCH_ASSOC);

}

return json_encode($row, TRUE);

}

非常感谢您对此的意见。

为了澄清,我希望得到与一个数据库完全相同的结果,但是为每个数据库添加(汇总)所有总和

0 个答案:

没有答案