Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

केवल mysql का उपयोग करके Magento में सभी उत्पाद आईडी, स्कस, उत्पाद नाम, विवरण कैसे खींचें?

शीर्षक एक स्टोर दृश्य से दूसरे में भिन्न हो सकता है। वही विवरण के लिए जाता है। साथ ही, कुछ स्टोर दृश्य बैकएंड में सेट किए गए डिफ़ॉल्ट मानों का उपयोग कर सकते हैं।

यहां एक विशिष्ट स्टोर दृश्य (आईडी 1) के लिए सभी उत्पादों के लिए आवश्यक डेटा (स्कू, नाम, विवरण) प्राप्त करने के तरीके के बारे में एक पूरी क्वेरी है।

SELECT 
    `e`.`sku`, 
    IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS `name`,
    IF(at_description.value_id > 0, at_description.value, at_description_default.value) AS `description`

FROM 
   `catalog_product_entity` AS `e` 
    INNER JOIN 
         `catalog_product_entity_varchar` AS `at_name_default` 
               ON (`at_name_default`.`entity_id` = `e`.`entity_id`) AND 
                  (`at_name_default`.`attribute_id` = (SELECT attribute_id FROM `eav_attribute` ea LEFT JOIN `eav_entity_type` et ON ea.entity_type_id = et.entity_type_id  WHERE `ea`.`attribute_code` = 'name' AND et.entity_type_code = 'catalog_product')) AND 
                  `at_name_default`.`store_id` = 0 
    LEFT JOIN 
          `catalog_product_entity_varchar` AS `at_name` 
               ON (`at_name`.`entity_id` = `e`.`entity_id`) AND 
                  (`at_name`.`attribute_id` = (SELECT attribute_id FROM `eav_attribute` ea LEFT JOIN `eav_entity_type` et ON ea.entity_type_id = et.entity_type_id  WHERE `ea`.`attribute_code` = 'name' AND et.entity_type_code = 'catalog_product')) AND 
                  (`at_name`.`store_id` = 1) 
    INNER JOIN 
         `catalog_product_entity_text` AS `at_description_default` 
               ON (`at_description_default`.`entity_id` = `e`.`entity_id`) AND 
                  (`at_description_default`.`attribute_id` = (SELECT attribute_id FROM `eav_attribute` ea LEFT JOIN `eav_entity_type` et ON ea.entity_type_id = et.entity_type_id  WHERE `ea`.`attribute_code` = 'description' AND et.entity_type_code = 'catalog_product')) AND 
                  `at_description_default`.`store_id` = 0 
    LEFT JOIN 
          `catalog_product_entity_text` AS `at_description` 
               ON (`at_description`.`entity_id` = `e`.`entity_id`) AND 
                  (`at_description`.`attribute_id` = (SELECT attribute_id FROM `eav_attribute` ea LEFT JOIN `eav_entity_type` et ON ea.entity_type_id = et.entity_type_id  WHERE `ea`.`attribute_code` = 'description' AND et.entity_type_code = 'catalog_product')) AND 
                  (`at_description`.`store_id` = 1) 

यदि आप इसे किसी अन्य स्टोर दृश्य के लिए चाहते हैं, तो बस मान 1 . को बदलें निम्नलिखित पंक्तियों में अपनी वांछित आईडी के साथ

(`at_name`.`store_id` = 1) 

और

(`at_description`.`store_id` = 1)

मुझे नहीं पता कि आपको एसक्यूएल प्रारूप में इसकी आवश्यकता क्यों है। यह एक अजीब और बड़ा त्रुटि स्रोत है। आप इसे कोड के माध्यम से आसानी से प्राप्त कर सकते हैं:

$collection = Mage::getResourceModel('catalog/product_collection')
        ->addAttributeToSelect(array('sku', 'name', 'description'));
foreach ($collection as $item) {
    $sku = $item->getSku();
    $name = $item->getName();
    $description = $item->getDescription(); 
    //do something with $sku, $name & $description
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओपनशिफ्ट:MySQL को रिमोट एक्सेस कैसे करें?

  2. MySQL संस्करण नियंत्रण - तोड़फोड़

  3. SQL में MySQL और SQLite अंतर

  4. MySql upsert और ऑटो-इन्क्रीमेंट अंतराल का कारण बनता है

  5. गलत डेटाटाइम मान डेटाबेस त्रुटि संख्या:1292