如何在带有联接查询的magento集合中使用分组依据


13

在模块的管理网格中,我正在使用此代码来获取集合并将其按客户ID分组

$collection = Mage::getModel('referafriend/statistics')->getCollection();
$collection->getSelect()->group('entity_id');
$this->setCollection($collection);

但是在这里,我必须针对每个客户使用渲染器和过滤器功能来处理客户信息,例如姓名和电子邮件entity_id。我想将客户模型与模块表一起加入。为此,我写了这段代码

 $collection = Mage::getModel('customer/customer')->getCollection()
 ->addNameToSelect();
$collection->getSelect()->join(array('refer' => 'table_name'),'refer.entity_id = e.entity_id'
          ); 
   $collection->getSelect()->group('entity_id'); 
   $collection->addAttributeToSelect('*');

但这给了我这个错误

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'entity_id' in group statement is ambiguous

任何帮助将不胜感激。


1
它应该是-> group('e.entity_id');
阿米特·贝拉

您应该将此添加为答案,并详细说明为什么需要e.
Jonathan Hussey 2014年

对不起这个愚蠢的错误。@AmitBera感谢您的帮助,请将其添加为答案,以便可以关闭问题。
哈里斯2014年

Answers:


26

您需要在中添加表名称group by condition。就像not added on conditions table name在表组('entity_id')上所做的那样,query did not find columns name

 getSelect()->group('e.entity_id');

逻辑是:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')

1
另外,如果您需要按多个字段分组,只需添加更多-> group()子句-> group('field1')-> group('field2');
GregC

我想使用分组依据订购独特的产品。我有2个订单和2个相同的订单商品。当前,它在网格中显示4行。但是我需要2行使用group by。
Dhaduk Mitesh

分享您的代码
Amit Bera

$collection = $object_manager->create('\Magento\Sales\Model\Order\Item')->getCollection(); $collection->getSelect()->join( ['order' => $this->getTable('sales_order')], 'order.entity_id = main_table.order_id and (if(main_table.parent_item_id IS NULL,main_table.price != 0.0000,main_table.parent_item_id IS NULL))', [ 'order_number' => 'order.increment_id', 'order_store_id' => 'order.store_id', ] );
Dhaduk Mitesh

我想按parent_item_id顺序分组。
Dhaduk Mitesh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.