2012-04-09 27 views
1
table name = call 

表結構:如何使從數據庫查詢多維數組

user_id | call_time | call_type| 

讓我們來填充它對於理​​解

user_id | call_time     | call_type| 
    0  2012-04-05 07:40:58 GMT+05:00  Mised 
    0  2012-04-06 08:58:45 GMT+05:00  Out 
    0  2012-04-08 09:40:58 GMT+05:00  Incom 

我想做

我需要的Mysql什麼或相當於Zend Framework的查詢

  1. call_type.that的總和,這是我需要知道每天有多少有或沒有收入或收入。

  2. 每天有多少call_time,也就是說我有2012-04-05那麼它在數據庫中有多少次。

我需要一個像

i = start from first day of the month and go up to last day of current month, 

我(2012-04-01)的理解多維數組

Array 
(
[ i (2012-04-01)]=>Array 
    (
    [Mised ] = 67(sum of all Missed call in this date) 
    [Out ] = 10(sum of all out call in this date) 
    [Incom ] = 10(sum of all Incom call in this date) 
    [total_call] =87 (Sum Of All) 
    ) 

[ i (2012-04-02) ]=>Array 
    [Mised ] = 17(sum of all Missed call in this date) 
    [Out ] = 2(sum of all out call in this date) 
    [Incom ] = 4(sum of all Incom call in this date) 
    [total_call] =23 (Sum Of All) 
    ) 
. 
. 
. 
. 
. 
. 
. 
. 
. 
[2012-04-30(last day current month)]=>Array 
    (
    [Mised ] = 77(sum of all Missed call in this date) 
    [Out ] = 72(sum of all out call in this date) 
    [Incom ] = 24(sum of all Incom call in this date) 
    [total_call] =173 (Sum Of All) 
    ) 

可以說我得到總戰績意味着日期是(2012 -04-13,2012-04-17,2012-04-23,2012-04-27,2012-04-29) 所以我的數組將從2012-04-01開始,因爲這在我的結果中找不到因爲我的陣列將是

[2012-04-01]=>Array 
    (
    [Mised ] = 0 
    [Out ] = 0 
    [Incom ] = 0 
    [total_call] = 0 

和(2012-04-13) 陣列將是

[2012-04-01]=>Array 
    (
    [Mised ] = 10 
    [Out ] = 55 
    [Incom ] = 9 
    [total_call] = 74 
    ) 

什麼我試圖=

public function Get_Calllogs_For_Graph($user_id, $phone_service_id){ 

    $curdate = new DateTime(date('Y-m-d')); 
    $current_month = date("m"); 
    $start_date = date("Y-$current_month-01"); 
    $start_date = $curdate->format("Y-$current_month-d H:i:s"); 
    $curdate = new DateTime(date('Y-m-d')); 
    $curr_date = $curdate->format('Y-m-d H:i:s'); 

    $DB = Zend_Db_Table_Abstract::getDefaultAdapter(); 
    $select = $DB->select() 
          ->from('call', array('*', 'CAST(call_time AS DATE) AS call_time ')) 
            ->where('phone_service_id = ?', $phone_service_id) 
            ->where('user_id = ?', $user_id) 
            ->where(" call_time >= ?", $start_date) 
            ->where(" call_time<= ?", $curr_date); 
             $select = $DB->fetchAssoc($select); 


    $records = array('Outgoing' => array(), 'Incoming' => array(), 'Missed' => array());    
    if(count($select)){ 
     foreach($select as $sel){ 

       if(!array_key_exists($sel['call_name'], $records[$sel['call_type']])){ 
        $records[$sel['call_type']][$sel['call_name']] = $this->Get_Calllogs_By_Callname($user_id, $phone_service_id, $start_date, $curr_date, $sel['call_name'], $sel['call_type']); 
       } 

     } 
    } 
    echo '<pre>'; 
    print_r($records); 
    echo '</pre>'; 

    } 
public function Get_Calllogs_By_Callname($user_id, $phone_service_id, $start_date, $curr_date, $call_name, $call_direction){ 

     $DB = Zend_Db_Table_Abstract::getDefaultAdapter(); 
     $select = $DB->select() 
       ->from('call_log', array('COUNT(*) AS total', 'CAST(call_name AS DATE) AS call_name')) 
         ->where('phone_service_id = ?', $phone_service_id) 
         ->where('user_id = ?', $user_id) 
         ->where('call_type= ?', $call_type) 
         ->having('call_name = ? ', $call_name); 
         //->where("call_type>= ?", $start_date) 
         //->where("call_type<= ?", $curr_date); 

          $select = $select->query()->fetchAll(); 
          if(count($select)){ 

           return $select[0]['total']; 

          }else{ 
           return 0; 
          } 

    } 

回答

2
select call_time, call_type, count(*) as num_by_type from db 
group by YEAR(call_time), MONTH(call_time), DAY(call_time), call_type. 

所以你必須爲每個CALL_TYPE每總和一天(意味着每天最多3項)。

然後,你應該不會很難每天創建一個數組,總和是這三種類型的總和(num_by_type)。

+0

我已經嘗試過,在它給出查詢結果 – 2012-04-09 15:59:45

+1

的最後一項之前,你是對的,沒有正確地看你的日期格式。編輯一個? – 2012-04-09 16:05:16

+0

u r genious我寫了20行代碼.ohhh GOD多少duffer我是 – 2012-04-09 16:16:44