Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để kéo tất cả id sản phẩm, giao diện, tên sản phẩm, mô tả trong magento chỉ bằng cách sử dụng mysql?

Tiêu đề có thể khác nhau giữa các lần xem cửa hàng. Tương tự với phần mô tả. Ngoài ra, một số chế độ xem cửa hàng có thể sử dụng các giá trị mặc định được đặt trong phần phụ trợ.

Đây là một truy vấn đầy đủ về cách lấy dữ liệu bạn cần (sku, tên, mô tả) cho tất cả các sản phẩm cho chế độ xem cửa hàng cụ thể (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) 

Nếu bạn muốn nó cho một chế độ xem cửa hàng khác, chỉ cần thay thế giá trị 1 với id mong muốn của bạn ở các dòng sau

(`at_name`.`store_id` = 1) 

(`at_description`.`store_id` = 1)

Tôi không biết tại sao bạn cần cái này ở định dạng sql. Đây là một nguồn lỗi lạ và lớn. Bạn có thể dễ dàng lấy nó thông qua mã:

$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. Cách kết nối với Nguồn dữ liệu MySQL trong Visual Studio

  2. Dữ liệu mùa xuân kết hợp với các thông số kỹ thuật

  3. Điều kiện WHERE tùy chọn PHP và MySQL

  4. Cách kiểm tra xem tên người dùng đã tồn tại với PHP / MYSQL hay chưa

  5. PHP và MySQL - làm thế nào để tránh mật khẩu trong mã nguồn?