在mysql中添加相同行的值

时间:2016-02-03 07:38:51

标签: php mysql arrays json jsonp

我有一个包含facebook广告数据的MYSQL表。

我正在使用Facebook广告API来获取特定帐户的所有广告。 在结果中,我有一些名称相同的广告,因为adset被删除了一个新的,在不同的时间段。

F.X。

NAME                     SPEND    
Gistrup   MSN Standard - 11
Storvorde MSN Standard - 12
Vejgaard  MSN Standard - 13
Aalborg   MSN Standard - 14
Gistrup   MSN Standard - 15
Storvorde MSN Standard - 16
Vejgaard  MSN Standard - 17
Aalborg   MSN Standard - 18

该数字是广告集上的花费金额。

然后我有这个脚本来选择数据并输出为JSON

 $fb_sql = "SELECT * FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."'";

        $fb_sth = $db->dbh->query($fb_sql);
        $fb_result = $fb_sth->fetchAll();

        $merged_data = array_merge($fb_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_spent"],
                        "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['jsonp']. '('. $json . ')';

如何获取具有相同名称的所有行并将它们组合在一起,以便将相同的行添加花费值,即两个“Gistrup MSN标准”将合并,SPEND值将为26( 11 + 15)。

我的JSON输出将包含以下内容:

NAME                     SPEND    
Gistrup   MSN Standard - 26
Storvorde MSN Standard - 28
Vejgaard  MSN Standard - 30
Aalborg   MSN Standard - 32

2 个答案:

答案 0 :(得分:1)

通过id_campaign_shortname选择id_campaign_shortname,sum(SPEND)组

答案 1 :(得分:1)

您可以使用group by子句更改您的sql 像这样的东西 -

SELECT `NAME`, SUM(`SPEND`) FROM <TABLE_NAME> GROUP BY NAME

在您的情况下,查询将看起来像这样 -

// You will need to add the col names here
$fb_sql = "SELECT `NAME`, SUM(`SPEND`) FROM $table WHERE id_campaign_shortname = '". $_GET["lpage"] ."' AND date_from = '". $date_from ."' AND date_to = '". $date_to ."' GROUP BY NAME";