报告中的SQL magento销售报告查询

时间:2014-03-03 06:56:24

标签: mysql magento

我想在下面的查询中添加颜色,大小等属性以及更多属性 我不知道什么是属性查询请帮我查一下这个

$form = Start Date 
$to = End Date
$this->_reset();
$this->getSelect()        
    ->joinInner(array(
          'i' => $this->getTable('sales/order_item')),
          'i.order_id = main_table.entity_id'
   ) 
   ->where('i.parent_item_id is null')
   ->where("i.created_at BETWEEN '".$from."' AND '".$to."'")
   ->where('main_table.state = \'complete\'')
   ->columns(array('ordered_qty' => 'count(distinct `main_table`.`entity_id`)'));

enter image description here

由于 Jitendra

1 个答案:

答案 0 :(得分:0)

销售订单项目表不存储每个销售产品的每个属性。因此,您必须在创建销售订单时决定是否要将这些属性添加到销售订单项目表中 - 或 - 如果您只想在产品目录中查找它们。

采用第一种方法的问题在于,您无法获取迄今为止订单的数据,只是从现在开始接下来的订单。

第二种方法的问题是,如果您更改或删除主目录中的产品,那么您的报告中将不再包含该数据。如果您永远不会更改您的产品,这可能不是问题,但为什么要冒风险?还有另一个问题 - 表现。对于报表必须在产品目录上运行查询以获取属性值的每个订单项,这会产生相当大的性能损失,直到您收到大量订单才会显而易见。

如果我们采用第一种方法,那么修改原始Magento提供的报告就没有太多意义。你也可以为它编写自己的模块。

在此模块中,您需要一个设置脚本,将所需的列添加到销售订单项目表中。

您还需要事件观察员在结帐时将属性移动到销售报价和销售订单对象中。如果没有这个,您的属性数据可能无法进入报告。

您可以通过Magento选项值ids保存属性值,但是,您可能会在某个阶段更改属性选项,因此无法查找这些属性。因此,而不是存储id,例如' 412'您需要存储标签,例如'红色&#39 ;.通过这种方式,报告将在明年的这个时候发挥作用,并在其中具有有意义的价值。

您还需要一个管理网格,从简单的产品而不是“可见的”产品中进行收集。 (即包括可配置的)销售订单项目表中的行项目。

如果您不愿意在销售订单项目表中添加额外的列,因为您不希望表格变得太大,您可以将属性值添加到Magento用于存储超级属性选项选项的序列化数据中并编写自己的自定义列渲染器以提取数据并在报告中显示。

有大量的编码可以获得您想要的报告,并且可以根据目录/属性选项值的更改来保护它。一旦您准确了解了您希望报告的内容,就可以一次性处理所有必需的步骤。