अगर आपके _prepareCollection
. में विधि मैं क्वेरी को इसके द्वारा प्रिंट करता हूं:
echo $collection->getSelect()->assemble();
मुझे यह मिलता है:
SELECT
`main_table`.*,
group_concat(sales_flat_shipment_track.track_number SEPARATOR ",") AS `track_number`,
group_concat(sales_flat_shipment_track.title SEPARATOR ",") AS `title`
FROM `sales_flat_order_grid` AS `main_table`
INNER JOIN `sales_flat_shipment_track`
ON main_table.entity_id = sales_flat_shipment_track.order_id
इस क्वेरी से मुझे हमेशा एक परिणाम मिलेगा, यहां तक कि एक "खाली" पंक्ति भी जब टेबल पर कोई ऑर्डर नहीं होता है। बल्कि, मुझे लगता है कि आप जो हासिल करने की कोशिश कर रहे हैं वह सबक्वेरी का उपयोग करके किया जा सकता है:
SELECT
`main_table`.*,
(
SELECT
group_concat(`t`.`track_number` SEPARATOR ",") AS `track_number`
FROM `sales_flat_shipment_track` AS `t`
WHERE `main_table`.`entity_id` = `t`.`order_id`
),
(
SELECT
group_concat(`t`.`title` SEPARATOR ",") AS `title`
FROM `sales_flat_shipment_track` as `t`
WHERE `main_table`.`entity_id` = `t`.`order_id`
)
FROM `sales_flat_order_grid` AS `main_table`;
तो इसका अनुवाद करने के लिए Magento के लिए, यह कुछ इस तरह दिखाई देगा:
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('sales/order_grid_collection');
$collection->getSelect()
->from(
array(),
array(
'track_number' => new Zend_Db_Expr('(
SELECT GROUP_CONCAT(`t`.`track_number` SEPARATOR ",")
FROM `sales_flat_shipment_track` as `t`
WHERE `main_table`.`entity_id` = `t`.`order_id`
)'),
'title' => new Zend_Db_Expr('(
SELECT GROUP_CONCAT(`t`.`title` SEPARATOR ",")
FROM `sales_flat_shipment_track` as `t`
WHERE `main_table`.`entity_id` = `t`.`order_id`
)'),
)
);
$this->setCollection($this);
return parent::_prepareCollection();
}
डुप्लिकेट कैरियर टाइटल के बारे में आपकी बात के लिए, इस तरह के मामले में इसकी उम्मीद की जानी चाहिए। इसका एकमात्र तरीका DISTINCT
. जोड़ना है इस तरह शीर्षक के लिए उप-क्वेरी में शब्द:
SELECT GROUP_CONCAT(DISTINCT `t`.`title` SEPARATOR ",")
लेकिन मुझे यकीन नहीं है कि आप ग्रिड में इस डेटा के साथ क्या करने की योजना बना रहे हैं। आशा है कि यह मदद करता है।