Sql वाले सभी अक्षम उत्पादों को कैसे सूचीबद्ध करें?


15

मुझे MySQL क्वेरी का उपयोग करके सभी अक्षम उत्पादों को सूचीबद्ध करने की आवश्यकता है।

मेरे डेटाबेस में बहुत सारे उत्पाद हैं जो कुछ इस तरह से उपयोग कर रहे हैं (एक संग्रह बनाना, इसे लोड करना और उस पर लूप करना): http://www.srikanth.me/get-all-disabled-products-on-magento/

जवाबों:


26

Magento के उत्पाद के रूप में ईएवी संरचना का निर्माण होता है

आपको तालिका और तालिका के बीच एक क्वेरी लिखने की आवश्यकता हैeav_attributecatalog_product_entity_int

मेज की catalog_product_entity_intमेज पर Magento के उत्पाद की स्थिति को बचाओ । इसे 1 और 2 के रूप में सहेजें।

  • 1 सक्षम के लिए
  • 2 विकलांग के लिए।

आपको विशेषता कोड का उपयोग करके स्टेटस विशेषता आईडी प्राप्त करना होगा status, मूल रूप से यह 96 है।

प्रश्न:

चयन करें_मदद से 'कैटलॉग_प्रोडक्ट_एंटिटी_इंट'
कहाँ
    SEL eav_attribute` से विशेषता_id चुनें
    कहाँ `विशेषता_कोड` पसंद 'स्थिति'
) और `कैटलॉग_प्रोडक्ट_एंट_इंट`.वेल्यू = 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 का मूल्य) को खोजने की आवश्यकता थी। यहां कुछ अतिरिक्त फ़ील्ड्स के साथ एक वर्तमान mysql क्वेरी है जिसे मैं शूट करने में परेशानी करता था कि किन उत्पादों को वास्तव में "सक्षम" होने की आवश्यकता है

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
फैबियन ... स्वरूपण के लिए धन्यवाद। दूसरों के लिए उपयोग करना बहुत आसान है।
डेविड जी। वरेला

0

@Amit बेरा उत्तर सबसे अच्छा है लेकिन SQL अनुरोध काम नहीं करता है यदि आपके पास "स्थिति" नामक एक से अधिक विशेषता कोड हैं (मेरे मामले में मेरे पास "स्थिति" की कुल 5 पंक्तियाँ हैं) और MySQL आपको लौटा देगा: #1242 - Subquery returns more than 1 rowत्रुटि।

इसलिए मैं एसक्यूएल क्वेरी को 'कैटलॉग / प्रोडक्ट_स्टैटस' जैसे स्रोत_मॉडल को इस तरह से जोड़कर काम करता हूं:

चयन करें_मदद से 'कैटलॉग_प्रोडक्ट_एंटिटी_इंट'
कहाँ
   SEL eav_attribute` से विशेषता_id चुनें
   कहाँ `विशेषता_कोड` पसंद 'स्थिति'
   और `source_model` LIKE 'कैटलॉग / product_status'
) और `कैटलॉग_प्रोडक्ट_एंट_इंट`.वेल्यू = 2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.