【发布时间】:2016-02-04 12:21:29
【问题描述】:
我在 MySQL 中有两个几乎相同的结构化表,但数据不同...我想连接这两个表并从两个表中获取列的总和。
$fb_sql = "SELECT campaign_name, adset_name, SUM(reach) AS reach, cpc, id_name, clicks, SUM(amount_spent) AS amount
FROM $table
WHERE id_campaign_shortname = '". $_GET["lpage"] ."' $where
AND date_from = '". $date_from ."'
AND date_to = '". $date_to ."'
GROUP BY id_name";
$google_sql = "SELECT campaign_name, SUM(reach) AS reach, cpc, id_name, clicks, SUM(amount_spent) AS amount
FROM google_msn_adwords_data
WHERE id_campaign_shortname = '". $_GET["lpage"] ."'
AND date_from = '". $date_from ."'
AND date_to = '". $date_to ."'
GROUP BY id_name";
但我想将两个表合并为一个输出,但将SUM(reach) 和SUM(amount_spent) 作为总值,f.x.fb_sql 的“范围”SUM 为 400,google_sql “到达”SUM 是 450,我的到达输出是 850。
我目前用这个输出数据:
$merged_data = array_merge($fb_result, $google_result);
$jsonArray = array();
if(count($merged_data) > 0) {
$total = 0;
foreach($merged_data as $elm) {
array_push($jsonArray, array(
"campaign" => array(
"campaignName" => $elm["campaign_name"],
"campaignAdsetName" => $elm["adset_name"],
"campaignReach" => $elm["reach"],
"campaignSpend" => $elm["amount"],
"campaignCPC" => $elm["cpc"],
"campaignClicks" => $elm["clicks"],
"campaignId" => $elm["id_name"],
)
)
);
$total += $elm["reach"];
}
$jsonCampaignDataArray = array("campaignData" => $jsonArray);
$jsonTotalReach = array("totalReach" => $total);
$finalArray = array_merge($jsonCampaignDataArray, $jsonTotalReach);
$json = json_encode($finalArray);
echo $_GET['jsoncallback']. '('. $json . ')';
但如上所述,我希望“合并”在 MYSQL 级别作为单个组合结果发生。
【问题讨论】:
-
在不知道实际查询是什么的情况下,我发现这种事情几乎是不可能的,但据推测 UNION 可能会在答案中占据重要地位。
-
您希望它按 id_name 分组和求和吗?
-
是的...我希望它按 id_name 分组