【问题标题】:Join two mysql tables and get total sum value of two columns加入两个mysql表并获得两列的总和值
【发布时间】: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 分组

标签: php mysql arrays json


【解决方案1】:

你可以使用连接查询,

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;

【讨论】:

    【解决方案2】:

    根据 MySQL documentation:

    UNION 用于合并多个 SELECT 语句的结果 到单个结果集中。

    看起来像这样:

    (SELECT * FROM table1)
    UNION
    (SELECT * FROM table2);
    

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2011-02-17
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多