조인 쿼리와 함께 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')이어야합니다.
Amit Bera

왜 필요한지에 대한 자세한 설명과 함께 이것을 답변으로 추가해야합니다.e.
Jonathan Hussey

이 바보 같은 실수에 대해 죄송합니다. @AmitBera 도와 주셔서 감사합니다. 질문을 닫을 수 있도록 이것을 답변으로 추가하십시오.
Haris

답변:


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

그룹 별을 사용하여 고유 한 제품을 주문하고 싶습니다. 2 개의 주문 항목과 2 개의 주문이 있습니다. 현재 그리드에 4 개의 행이 표시됩니다. 그러나 group by를 사용하는 2 행이 필요합니다.
Dhaduk Mitesh '17

코드 공유
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 '17
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.