sql >> データベース >  >> RDS >> Mysql

mysqlのみを使用してmagentoですべての製品ID、SKU、製品名、説明を取得するにはどうすればよいですか?

    タイトルは、ストアビューごとに異なる場合があります。説明も同様です。また、一部のストアビューでは、バックエンドで設定されたデフォルト値を使用できます。

    これは、特定のストアビュー(ID 1)のすべての製品に必要なデータ(SKU、名前、説明)を取得する方法に関する完全なクエリです。

    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を置き換えるだけです。 次の行に希望のIDを付けて

    (`at_name`.`store_id` = 1) 
    

    および

    (`at_description`.`store_id` = 1)
    

    なぜこれがSQL形式で必要なのかわかりません。これは奇妙で大きなエラーの原因です。コードから簡単に取得できます:

    $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. アクセスサポート会社と協力することの利点は何ですか?

    2. mysqldumpを使用せずにクエリを使用してデータベースをバックアップする

    3. MariaDBで日時に議事録を追加する8つの方法

    4. Postgresql:パスワードを使用したpsql実行のスクリプティング