繁体   English   中英

加入两个mysql表并获得两列的总和值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM