আসুন এসকিউএল নিয়ে চিন্তা শুরু করুন, ম্যাজেন্টো নয় (আমরা পরে সেখানে যাব)। আমি এটিকে লিখব (সরলতার জন্য সময় অঞ্চলকে উপেক্ষা করে):
SELECT sku,SUM(qty_ordered) FROM sales_flat_order_item
WHERE created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()
GROUP BY sku
এই ক্যোয়ারীটি কাজ করে (আমি পরীক্ষা করেছি)। সুতরাং, আমরা কীভাবে এই প্রশ্নটি ম্যাজেন্টোতে লিখতে যাব?
- প্রথমত, আমরা দেখতে পাচ্ছি যে এটি পুরোপুরি উপর ভিত্তি করে
sales_flat_order_item
- ম্যাজেন্টোর এই সারণির জন্য একটি বিশেষ সংস্থান সংগ্রহ রয়েছে; আমরা এটি ব্যবহার করতে পারি।
- আমরা দেখতে পাচ্ছি যে এটি
SUM
কলামগুলির একটিতে একটি ব্যবহার করে
WHERE
একটি BETWEEN
ধারা রয়েছে - আমরা সম্ভবত Zend_Db_Expr
আমাদের কাস্টম রোলিং 2-সপ্তাহের সময়সীমার আউটপুট ব্যবহার করতে পারি ।
- অবশেষে, এটি একটি
GROUP
আসুন আমরা এটি একসাথে রাখতে পারছি না কিনা তা দেখুন, তারপরে দ্রুত কল দিয়ে reset
আমরা নিশ্চিত করেছি যে আমরা কেবল যে কলামগুলি সংজ্ঞায়িত করেছি তা পেয়েছি এবং অন্য কিছুই:
$query = Mage::getResourceModel('sales/order_item_collection');
$query->getSelect()->reset(Zend_Db_Select::COLUMNS)
->columns(array('sku','SUM(row_total)'))
->where(new Zend_Db_Expr('created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()'))
->group(array('sku'));
একটি সাধারণ প্রতিধ্বনি $query->getSelect()
আমাদের দেখায় যে ক্যোয়ারীটি বেশ ভালভাবে ফর্ম্যাট হয়েছে:
SELECT `main_table`.`sku`, SUM(qty_ordered) FROM `sales_flat_order_item` AS `main_table` WHERE (created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()) GROUP BY `sku`
অন্যান্য বিবেচ্য বিষয়:
ভবিষ্যতে আপনি অর্ডার স্থিতির ভিত্তিতে এই প্রতিবেদনটি ফিল্টার করতে চাইতে পারেন (অন্য টেবিলে যোগ দেওয়া) অথবা আপনি সময় অঞ্চল সঠিক কিনা তা নিশ্চিত করতে চাইতে পারেন (এখনই এটি GMT এর উপর ভিত্তি করে প্রতিবেদন করছে)।
যোগদান সহজ:
->join(array('e' => 'sales_flat_order'),'main_table.order_id = e.entity_id')
তবে সময় অঞ্চল যুক্ত করা জটিল হতে পারে। দেখব Mage_Core_Model_Date
কিছু পদ্ধতি এবং জিএমটি থেকে টাইমস্ট্যাম্প রূপান্তর জন্য। বিক্রয় প্রতিবেদনের সংগ্রহটিও দেখুন।
আশা করি এইটি কাজ করবে! শুভকামনা করছি.