[英]Join two mysql tables and get total sum value of two columns
在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(amount_spent)
为SUM(reach)
和SUM(amount_spent)
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级别作为单个合并结果发生。
您可以使用联接查询,
eg: SELECT bus.id, SUM( bus.type + rate.rating )
FROM `business` bus
JOIN ratings rate ON rate.bus_id = bus.id where rate.bus_id=1;
根据MySQL 文档 :
UNION用于将来自多个SELECT语句的结果合并为一个结果集。
它看起来像这样:
(SELECT * FROM table1)
UNION
(SELECT * FROM table2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.