How to pull all the product id, skus, product names, description in magento using only mysql?

后端 未结 5 1990
孤街浪徒
孤街浪徒 2020-12-13 20:55

How i will pull all the prduct ir, skus , product name (titles) and desxription using mysql from Magento database? I used following query and got all the attributes except p

相关标签:
5条回答
  • 2020-12-13 21:14

    The title can be different from one store view to an other. Same goes for the description. Also, some store views can use the default values set in the backend.

    Here is a full query on how to get the data you need (sku, name, description) for all the products for a specific store view (id 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) 
    

    If you want it for an other store view, just replace the value 1 with your desired id at the following lines

    (`at_name`.`store_id` = 1) 
    

    and

    (`at_description`.`store_id` = 1)
    

    I don't know why you need this in an sql format. This is a strange and a big error source. You can easily get it through code:

    $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
    }
    
    0 讨论(0)
  • 2020-12-13 21:18

    For fetching the product name please try

    $sql = "SELECT `value`
    FROM catalog_product_entity_varchar
    WHERE entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product') 
    AND attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product'))";
    
    $results = $readConnection->fetchAll($sql);
    
    0 讨论(0)
  • 2020-12-13 21:20

    This query contain Product name, image, price, quantity, description

    SET @etype = (SELECT 
                        entity_type_id
                    FROM
                        eav_entity_type
                    WHERE
                        entity_type_code = 'catalog_product');
    

    Product name attribute ID

    SET @name  = (SELECT 
                attribute_id
            FROM
                eav_attribute
            WHERE
                attribute_code = 'name'
                    AND entity_type_id = @etype);
    

    Product image attribute ID

    SET @image  = (SELECT 
                attribute_id
            FROM
                eav_attribute
            WHERE
                attribute_code = 'image'
                    AND entity_type_id = @etype);                
    

    Product small image attribute ID

    SET @smallimage = (SELECT 
            attribute_id
            FROM 
               eav_attribute
            WHERE 
               attribute_code = 'small_image'
                   AND entity_type_id = @etype);
    

    Product price attribute ID

    SET @price  = (SELECT 
                attribute_id
            FROM
                eav_attribute
            WHERE
                attribute_code = 'price'
                    AND entity_type_id = @etype);
    

    Product description attribute ID

    SET @description  = (SELECT 
                attribute_id
            FROM
                eav_attribute
            WHERE
                attribute_code = 'description'
                    AND entity_type_id = @etype);
    

    -- Admin store ID -- SET @store = 0;

    SELECT 
        e.entity_id AS 'id',
        e.sku,
        v1.value AS 'name',
        v2.value AS 'image',
        s2.value AS 'small_image',
        si.qty AS 'stock qty',
        d1.value AS 'price',
        s1.value AS 'description'
    FROM
        catalog_product_entity e
            LEFT JOIN
        cataloginventory_stock_item si ON e.entity_id = si.product_id
            LEFT JOIN
        catalog_product_entity_varchar v1 ON e.entity_id = v1.entity_id
            AND v1.store_id IN (0,1,2)
            AND v1.attribute_id = @name
            LEFT JOIN
        catalog_product_entity_varchar v2 ON e.entity_id = v2.entity_id
            AND v2.store_id IN (0,1,2)
            AND v2.attribute_id = @image 
            LEFT JOIN        
        catalog_product_entity_varchar s2 ON e.`entity_id` = s2.entity_id
        AND s2.store_id IN (0,1,2)
        AND s2.`attribute_id` = @smallimage
        LEFT JOIN
        catalog_product_entity_decimal d1 ON e.entity_id = d1.entity_id
            AND d1.store_id IN (0,1,2)
            AND d1.attribute_id = @price
            LEFT JOIN
            catalog_product_entity_text s1 ON e.entity_id = s1.entity_id
           AND s1.store_id IN (0,1,2)
           AND s1.attribute_id = @description ;
    
    0 讨论(0)
  • 2020-12-13 21:23

    Below is the simple way.

    select 
    sku.entity_id, sku.sku, #get sku and entity
    productName.value, #get name
    description.value #get description
    from 
    catalog_product_entity as sku,
    catalog_product_entity_varchar as productName,
    catalog_product_entity_text as description
    where
    productName.attribute_id = 73 
    and
    sku.entity_id = productName.entity_id
    and
    description.attribute_id = 75
    and
    sku.entity_id = description.entity_id;
    
    0 讨论(0)
  • 2020-12-13 21:30

    Here is another query to show entity_id, product_name, sku

    SELECT
        catalog_product_entity_varchar.entity_id,
        catalog_product_entity_varchar.`value` AS product_name,
        catalog_product_entity.sku
    FROM
        catalog_product_entity_varchar
    INNER JOIN catalog_product_entity ON catalog_product_entity_varchar.entity_id = catalog_product_entity.entity_id
    WHERE
        catalog_product_entity_varchar.entity_type_id = (
            SELECT
                entity_type_id
            FROM
                eav_entity_type
            WHERE
                entity_type_code = 'catalog_product'
        )
    AND attribute_id = (
        SELECT
            attribute_id
        FROM
            eav_attribute
        WHERE
            attribute_code = 'name'
        AND entity_type_id = (
            SELECT
                entity_type_id
            FROM
                eav_entity_type
            WHERE
                entity_type_code = 'catalog_product'
        )
    )
    
    0 讨论(0)
提交回复
热议问题