2010-07-20 127 views
3

我試圖在報告/銷售/運輸中添加新列。列現在可以,但我無法顯示來自其他表的值。SQL Magento銷售報告

在app /代碼

/本地/法師/銷售/型號/ Mysql4 /報告/ Shipping.php

protected function _aggregateByOrderCreatedAt($from, $to) 
{ 
    try { 
     $tableName = $this->getTable('sales/shipping_aggregated_order'); 
     $writeAdapter = $this->_getWriteAdapter(); 

     $writeAdapter->beginTransaction(); 

     if (is_null($from) && is_null($to)) { 
      $writeAdapter->query("TRUNCATE TABLE {$tableName}"); 
     } else { 
      $where = (!is_null($from)) ? "so.updated_at >= '{$from}'" : ''; 
      if (!is_null($to)) { 
       $where .= (!empty($where)) ? " AND so.updated_at <= '{$to}'" : "so.updated_at <= '{$to}'"; 
      } 

      $subQuery = $writeAdapter->select(); 
      $subQuery->from(array('so'=>$this->getTable('sales/order')), array('DISTINCT DATE(so.created_at)')) 
       ->where($where); 

我加這4條線:$ subQuery-> joinInner:

  $subQuery->joinInner(array('sd'=> $this->getTable('sales/order_datetime')), 
      "`sd`.`entity_id` = `so`.`entity_id`", 
      array() 
     ); 


      $deleteCondition = 'DATE(period) IN (' . new Zend_Db_Expr($subQuery) . ')'; 
      $writeAdapter->delete($tableName, $deleteCondition); 
     } 


     $columns = array(
      'period'    => "DATE(created_at)", 
      'shipping_description' => 'shipping_description', 
      'orders_count'   => 'COUNT(entity_id)', 
      'total_shipping'  => 'SUM(`base_shipping_amount` * `base_to_global_rate`)', 

      'store_id'    => 'store_id', 
      'order_status'   => 'status', 
      'point_relais'    => 'shipping_description', 
      'date_commande'    => "DATE(created_at)", 
      'date_livraison'    => "DATE(value)" 

     $select = $writeAdapter->select() 
      ->from($this->getTable('sales/order'), $columns) 
      ->where('state NOT IN (?)', array(
       Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, 
       Mage_Sales_Model_Order::STATE_NEW 
      )) 
      ->where('is_virtual = 0'); 

      if (!is_null($from) || !is_null($to)) { 
       $select->where("DATE(created_at) IN(?)", new Zend_Db_Expr($subQuery)); 
      } 

      $select->group(array(
       "DATE(created_at)", 
       'store_id', 
       'order_status', 
       'shipping_description' 
       'point_relais', 
       'date_commande', 
       'date_livraison', 
       'client' 
      )); 

最後,'date_livraison'中的「value」是來自表sales/order_datetime的唯一變量,我無法顯示它。 其他變量來自表銷售/訂單,並且很好地顯示。

我覺得有什麼不對或缺失

  $subQuery->joinInner(array('sd'=> $this->getTable('sales/order_datetime')), 
      "`sd`.`entity_id` = `so`.`entity_id`", 
      array() 
     ); 

我已經聲明在應用程序/代碼表sales_order_datetime /核心/法師/銷售/等/ config.xml中有:

   <order_datetime><table>sales_order_datetime</table></order_datetime> 

並在數據庫中date_livraison是在適當的格式

如果你能幫助我。 謝謝

回答

0

您沒有返回連接表中的任何列。

$subQuery->joinInner(array('sd'=> $this->getTable('sales/order_datetime')), 
     "`sd`.`entity_id` = `so`.`entity_id`", 
     array('name_of_column') // <---This is what is missing. 
    ); 

這是要返回的列數組。