Cómo usar group by en la colección magento con consulta de unión

13

En la cuadrícula de administración del módulo, estoy usando este código para obtener la colección y agruparlos por ID de cliente

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

pero aquí tengo que usar las funciones de procesador y filtro para la información del cliente, como el nombre y el correo electrónico de cada uno entity_id. Quiero unirme al modelo del cliente con la tabla de mi módulo. para esto he escrito este código

 $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('*');

pero me da este error

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

Cualquier ayuda será muy apreciada.

Haris
fuente
1
debería ser -> group ('e.entity_id');
Amit Bera
Debería agregar esto como respuesta con algunos detalles sobre por qué necesita ele.
Jonathan Hussey
Perdón por este tonto error. @AmitBera gracias por su ayuda y agregue esto como respuesta para que la pregunta pueda cerrarse.
Haris

Respuestas:

26

Debe agregar el nombre de la tabla en group by condition. Como lo hizo not added on conditions table nameen el grupo de tabla ('entity_id') asíquery did not find columns name

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

La lógica es:

$collection->getSelect()->group('TABLE_NAME.FIELD_NAME')
Amit Bera
fuente
1
Además, si necesita agrupar por múltiples campos, simplemente agregue más -> cláusulas group () -> group ('field1') -> group ('field2');
GregC
Quiero ordenar productos únicos usando group by. Tengo 2 pedidos con 2 artículos del mismo pedido. Actualmente, se muestra 4 filas en la cuadrícula. Pero necesito 2 filas usando group by.
Dhaduk Mitesh
Comparta su código
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
Quiero agrupar por parent_item_idorden sabio.
Dhaduk Mitesh