Pregunta

Estoy intentando añadir el nombre del producto, SKU del producto, y el método de envío de pedidos, a la orden de la parrilla de ventas.

Así es como mi función miradas:

protected function _prepareCollection()
{
    echo $collection = Mage::getResourceModel($this->_getCollectionClass())
    ->join(
            'sales/order_item',
            '`sales/order_item`.order_id=`main_table`.entity_id',
            array(
                    'skus'  => new Zend_Db_Expr('group_concat(`sales/order_item`.sku SEPARATOR ",")'),
                    'names' => new Zend_Db_Expr('group_concat(`sales/order_item`.name SEPARATOR ",")'),
            )
    )
    ->join(
            'sales/order',
            '`sales/order`.entity_id=`main_table`.entity_id',
            array(
                    'shipping_description' => 'shipping_description'
            )
    );
    echo $collection->getSelect();
    $collection->getSelect()->group('entity_id');
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

pero esto da este error:

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

Probablemente porque hay dos entitity_ids en el main_table.

¿Hay una manera de solucionar este problema?

¿Fue útil?

Solución

$collection->getSelect()->group('entity_id');

ENTITY_ID es el nombre de PK para muchas tablas. Se debe especificar el nombre de la tabla, así:

$collection->getSelect()->group('maint_table.entity_id');

También, ver:. $collection->getSelect() copiar y pegar la consulta a MySQL para que entienda más el problema que subyace

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top