Come utilizzare group by nella raccolta magento con query di join


13

Nella griglia di amministrazione del modulo sto usando questo codice per ottenere la raccolta e raggrupparli per ID cliente

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

ma qui devo usare le funzioni di rendering e filtro per informazioni sui clienti come nome ed e-mail per ciascuna entity_id. voglio unire il modello del cliente alla tabella del mio modulo. per questo ho scritto questo codice

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

ma mi dà questo errore

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

qualsiasi aiuto sarà molto apprezzato.


1
dovrebbe essere -> gruppo ('e.entity_id');
Amit Bera

Dovresti aggiungere questo come una risposta con alcuni dettagli sul perché hai bisogno die.
Jonathan Hussey,

Ci scusiamo per questo stupido errore. @AmitBera grazie per il tuo aiuto e per favore aggiungi questo come risposta in modo che la domanda possa essere chiusa.
Haris,

Risposte:


26

Devi aggiungere il nome della tabella in group by condition. Come hai fatto not added on conditions table namenel gruppo di tabelle ('entity_id') cosìquery did not find columns name

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

La logica è:

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

1
Inoltre, se devi raggruppare per più campi, aggiungi semplicemente altre clausole -> group () -> group ('field1') -> group ('field2');
GregC,

Voglio ordinare prodotti unici utilizzando group by. Ho 2 ordini con 2 articoli dello stesso ordine. Attualmente, viene visualizzato 4 righe nella griglia. Ma ho bisogno di 2 righe usando group by.
Dhaduk Mitesh,

Condividi il tuo codice
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,

Voglio raggruppare per parent_item_idordine saggio.
Dhaduk Mitesh il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.