2016-02-03 1 views
0

У меня есть таблица MYSQL, содержащая данные рекламы в facebook.Добавить значения одинаковых строк в mysql

Я использую API объявлений Facebook, чтобы получить все объявления для определенной учетной записи. В результате у меня есть несколько объявлений с одинаковыми именами из-за того, что для нового объявления была удалена реклама, в течение разного периода времени.

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 Standard» будут объединены, а значение SPEND будет равно 26 (11 + 15).

Мой выход JSON будет содержать что-то вроде этого:

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

ответ

1

Вы можете изменить SQL, используя group by пункт.
Что-то вроде этого -

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"; 
+0

Конечно! Просто как тот! Благодаря! –

1

выберите выберите id_campaign_shortname, сумма (тратиться) группу по id_campaign_shortname

Смежные вопросы