2016-07-25 15 views
1

Ich habe diese SQL-Abfrage, um alle Magento-Kategorien zu erhalten.Holen Sie sich alle Magento-Kategorien mit SQL-Abfrage

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' 

Dies gibt alle Kategorien mit Ausnahme der ich eine neue Kategorie von Magento Backend erstellt, aber das wird nicht angezeigt.

Diese Kategorie wurde veröffentlicht und enthält keine Produkte. Folgendes Bild ist von catalog_category_entity_varchar Tabelle.

enter image description here

entity_id = 449 zeigt, wenn ich diese Abfrage ausführen, weil es attribute_id = 57 and 41

hat aber ich rede entity_id = 452, die nicht angezeigt wird, weil es nicht attribute_id = 57 hat.

Ich möchte Magento Experten fragen, was gehört zu attribute_id = 57? und wie kann ich diese Abfrage reparieren, um alle Kategorien abzurufen? PS Ich möchte reine SQL-Abfrage, kein Magento-Code!

Antwort

1

Sie sind Kategorien von EAV Kategoriemodell ausgewählt werden, die Attribute 57 und 41 von varchar Typ hat:

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

Nach meiner 1.9 magento Installation dies sind name und path Attribute von 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);

Um alle rohen Kategorien dieses SQL verwenden zu erhalten:

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

oder Kategorien zu bekommen mit Namen verwenden diese:

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

Ich möchte eine SQL-Abfrage nicht Magento-Code – Umair

+0

Ich habe keinen CODE-Zugriff auf diese Website, nur Back-End-Zugriff .... – Umair

+0

von welcher Tabelle? Ich kann es posten, wenn Sie mir sagen, Tabelle – Umair

1

Nur eine Vermutung ...

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

Es auch gleiche Anzahl der zurückgegebenen Ergebnisse :(didnt diese Kategorie zurückkehren dass ich vermisse – Umair