2016-07-25 75 views
1

我有这个SQL查询来获取所有Magento类别。使用SQL查询获取所有Magento类别

SELECT DISTINCT 
    cc.entity_id AS id, 
    cc.`value` AS path, 
    cc1.`value` AS `NAME`, 
    cce.`level`, 
    cce.parent_id 
FROM 
    catalog_category_entity_varchar cc 
JOIN catalog_category_entity_varchar cc1 ON cc.entity_id = cc1.entity_id 
JOIN eav_entity_type ee ON cc.entity_type_id = ee.entity_type_id 
JOIN catalog_category_entity cce ON cc.entity_id = cce.entity_id 
WHERE 
    cc.attribute_id = '57' 
AND cc1.attribute_id = '41' 
AND ee.entity_model = 'catalog/category' 

这将返回所有类别,除了我从Magento后端创建一个新的类别,但没有显示。

该类别已发布,并且中没有产品。 以下图片来自catalog_category_entity_varchar表。

enter image description here

entity_id = 449显示了当我运行该查询,因为它有attribute_id = 57 and 41

但我说的entity_id = 452未显示,因为它没有attribute_id = 57

我想问问Magento专家,attribute_id = 57属于什么?以及如何修复此查询以获取所有类别? PS 我想纯粹的SQL查询,没有Magento代码!

回答

1

您的选择会从具有属性57varchar41 EAV的分类模型类:

cc.attribute_id = '57' 
cc1.attribute_id = '41' 

据我1.9的Magento安装这是namepath属性catalog/catagory

select distinct ea.attribute_code from eav_attribute as ea inner join catalog_category_entity_varchar as vc on ea.attribute_id=vc.attribute_id where vc.attribute_id in (57,41);

要获得所有原料类使用SQL:

SELECT `e`.* FROM `catalog_category_entity` AS `e` WHERE (`e`.`entity_type_id` = '3')' 

或获得类别与名称使用:

SELECT `e`.*, 
     IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS `name` 
FROM `catalog_category_entity` AS `e` 
INNER JOIN `catalog_category_entity_varchar` AS `at_name_default` ON (`at_name_default`.`entity_id` = `e`.`entity_id`) 
AND (`at_name_default`.`attribute_id` = '41') 
LEFT JOIN `catalog_category_entity_varchar` AS `at_name` ON (`at_name`.`entity_id` = `e`.`entity_id`) 
AND (`at_name`.`attribute_id` = '41') 
+0

我想要一个SQL查询不是magento代码 – Umair

+0

我没有CODE访问该网站,只有后端访问.... – Umair

+0

从哪个表?我可以发布它,如果你告诉我表 – Umair

1

只是一个猜测...

SELECT DISTINCT cc.entity_id id 
       , cc.value path 
       , cc1.value NAME 
       , cce.level 
       , cce.parent_id 
      FROM catalog_category_entity_varchar cc 
      LEFT 
      JOIN catalog_category_entity_varchar cc1 
      ON cc.entity_id = cc1.entity_id 
      AND cc1.attribute_id = 41 
      JOIN eav_entity_type ee 
      ON cc.entity_type_id = ee.entity_type_id 
      JOIN catalog_category_entity cce 
      ON cc.entity_id = cce.entity_id 
      WHERE cc.attribute_id = 57 
      AND ee.entity_model = 'catalog/category' 
+0

它也返回相同数量的结果:(didnt返回类别我缺少 – Umair

相关问题