結合クエリでMagentoコレクションでgroup byを使用する方法


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.
ジョナサンフセ14年

この馬鹿げた間違いでごめんなさい。@AmitBeraはあなたの助けに感謝し、その質問を閉じることができるように答えとしてこれを追加してください。
ハリス14年

回答:


26

あなたには、テーブル名を追加する必要がありますgroup by conditionあなたがやったの.as 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

group byを使用してユニークな製品を注文したい。私は2つの同じ注文アイテムで2つの注文をしています。現在、グリッドには4行が表示されています。ただし、group byを使用した2行が必要です。
ダダックミテシュ19

コードを共有する
アミットベラ

$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', ] );
ダダックミテシュ19

parent_item_id賢明な順序でグループ化したい。
ダダックミテシュ19
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.