এসকিএল দিয়ে সমস্ত অক্ষম পণ্য কীভাবে তালিকাভুক্ত করবেন?


15

আমার একটি মাইএসকিউএল কোয়েরি ব্যবহার করে সমস্ত অক্ষম পণ্য তালিকাভুক্ত করা দরকার।

আমার ডাটাবেসে এমন অনেকগুলি পণ্য রয়েছে যা এই জাতীয় কিছু ব্যবহার করে (একটি সংগ্রহ তৈরি করে, এটিকে লোড করে এবং এটির উপর দিয়ে লুপিং করে): http://www.srikanth.me/get-all-disabled-products-on-magento/

উত্তর:


25

ম্যাজেন্টো পণ্য হিসাবে EAV কাঠামো অনুসরণ করে

আপনি একটি লিখতে প্রয়োজন ক্যোয়ারী মধ্যে eav_attributeএবং catalog_product_entity_intটেবিল

টেবিল catalog_product_entity_intটেবিলের পণ্য স্থিতি সংরক্ষণ করুন । এটি 1 এবং 2 হিসাবে সংরক্ষণ করুন।

  • সক্ষম করার জন্য 1
  • অক্ষম জন্য 2।

আপনাকে অ্যাট্রিবিউট কোড ব্যবহার করে স্ট্যাটাস অ্যাট্রিবিউট আইডি পেতে statusহবে, মূলত এটি 96।

প্রশ্ন:

নির্বাচন করুন সত্তা_আইটি থেকে FROM `ক্যাটালগ_প্রডাক্ট_েন্টিটি_আইটি``
যেখানে বৈশিষ্ট্য_আইডি = (
    নির্বাচন করুন অ্যাট্রিবিউট_আইডি FROM `eav_attribute``
    যেখানে 'বৈশিষ্ট্য' কোড পছন্দ করুন 'স্থিতি'
) এবং `ক্যাটালগ_প্রডাক্ট_েন্টিটি_িন্ট.ভ্যালু = 2

5

ম্যাজেন্টো ক্যোয়ারী

$productsCollection = Mage::getModel('catalog/product')->getCollection()
                    ->addAttributeToFilter('status', 2); // added enabled

মাইএসকিএল ক্যোয়ারী

SELECT `e`.*, IF(at_status.value_id > 0, at_status.value, at_status_default.value) AS `status` 
FROM `catalog_product_entity` AS `e` 
INNER JOIN `catalog_product_entity_int` AS `at_status_default` 
 ON (`at_status_default`.`entity_id` = `e`.`entity_id`)
  AND (`at_status_default`.`attribute_id` = '96') 
  AND `at_status_default`.`store_id` = 0 
LEFT JOIN `catalog_product_entity_int` AS `at_status` 
 ON (`at_status`.`entity_id` = `e`.`entity_id`) 
  AND (`at_status`.`attribute_id` = '96') 
  AND (`at_status`.`store_id` = 1) 
WHERE (IF(at_status.value_id > 0, at_status.value, at_status_default.value) = '2')

0

প্রতি অ্যামিট পোস্টে - আমাকে "অক্ষম" আইটেমগুলি খুঁজে পাওয়ার দরকার (2 টির মান)। কয়েকটি অতিরিক্ত ক্ষেত্রের সাথে এখানে একটি বর্তমান মাইএসকিএল ক্যোয়ারী রয়েছে যা আমি অঙ্কিত করতে সমস্যায় পড়েছিলাম কোন পণ্যগুলিতে আসলে "সক্ষম" হওয়া দরকার

select
  `eav_attribute`.`attribute_id` AS `attribute_id`,
  `catalog_product_entity_int`.`entity_id` AS `entity_id`,
  `catalog_product_entity_int`.`value` AS `value`,
  `eav_attribute`.`attribute_code` AS `attribute_code`,
  `catalog_product_entity`.`sku` AS `sku`,
  `catalog_product_entity`.`created_at` AS `created_at`,
  `catalog_product_entity`.`updated_at` AS `updated_at`
from
  ((`eav_attribute`
  join `catalog_product_entity_int` on ((`eav_attribute`.`attribute_id` = `catalog_product_entity_int`.`attribute_id`)))
  join `catalog_product_entity` on ((`catalog_product_entity_int`.`entity_id` = `catalog_product_entity`.`entity_id`)))
where
  ((`eav_attribute`.`attribute_code` = 'status') and
  (`catalog_product_entity_int`.`value` = 2));

2
ফ্যাবিয়ান ... বিন্যাসের জন্য ধন্যবাদ অন্যদের ব্যবহার করা অনেক সহজ।
ডেভিড জি। Varela

0

@ অমিত বেড়ার উত্তরটি সেরা তবে এসকিউএল অনুরোধটি কার্যকর হয় না যদি আপনার কাছে "স্থিতি" নামে একাধিক বৈশিষ্ট্যযুক্ত কোড থাকে (আমার ক্ষেত্রে আমার কাছে "স্থিতির" মোট 5 টি লাইন রয়েছে) এবং মাইএসকিউএল আপনাকে ফিরিয়ে দেবে: #1242 - Subquery returns more than 1 rowত্রুটি।

সুতরাং আমি উত্স_ মডেলটিকে 'ক্যাটালগ / প্রোডাক্ট_স্ট্যাটাস' এর মতো কাজ করে এইভাবে এসকিউএল কোয়েরি সম্পন্ন করেছি:

নির্বাচন করুন সত্তা_আইটি থেকে FROM `ক্যাটালগ_প্রডাক্ট_েন্টিটি_আইটি``
যেখানে বৈশিষ্ট্য_আইডি = (
   নির্বাচন করুন অ্যাট্রিবিউট_আইডি FROM `eav_attribute``
   যেখানে 'বৈশিষ্ট্য' কোড পছন্দ করুন 'স্থিতি'
   এবং `উত্স_ মডেল` পছন্দ করুন 'ক্যাটালগ / প্রোডাক্ট_স্ট্যাটাস'
) এবং `ক্যাটালগ_প্রডাক্ট_েন্টিটি_িন্ট.ভ্যালু = 2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.