Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menarik semua id produk, skus, nama produk, deskripsi di magento hanya menggunakan mysql?

Judul dapat berbeda dari satu tampilan toko ke tampilan lainnya. Hal yang sama berlaku untuk deskripsi. Selain itu, beberapa tampilan toko dapat menggunakan nilai default yang ditetapkan di backend.

Berikut adalah pertanyaan lengkap tentang cara mendapatkan data yang Anda butuhkan (sku, nama, deskripsi) untuk semua produk untuk tampilan toko tertentu (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) 

Jika Anda menginginkannya untuk tampilan toko lain, ganti saja nilai 1 dengan id yang Anda inginkan di baris berikut

(`at_name`.`store_id` = 1) 

dan

(`at_description`.`store_id` = 1)

Saya tidak tahu mengapa Anda membutuhkan ini dalam format sql. Ini adalah sumber kesalahan yang aneh dan besar. Anda dapat dengan mudah mendapatkannya melalui kode:

$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. SQL - Pilih baris dari dua tabel yang berbeda

  2. menampilkan data dari database ke tabel html

  3. MySQL:Kode Kesalahan:1118 Ukuran baris terlalu besar (> 8126). Mengubah beberapa kolom menjadi TEXT atau BLOB

  4. Bagaimana mencegah pembuatan catatan di mana nilai dua bidang sama?

  5. MySQL UPDATE dengan SELECT SUM dari tabel yang berbeda