Magento 1.6 sql查询来自eav_attribute_option_value表的属性

时间:2016-09-23 15:40:40

标签: mysql sql magento

我想创建一个SQL查询来获取catalog_product_entity表中每个产品的SKU,以及来自attribute_option_value表的值,以获取我知道属性代码的特定属性。 我不知道如何从第一个提到的表到第二个表。 有任何想法吗?谢谢

表1:catalog_product_entity(我需要这里的SKU): entity_identity_type_idattribute_set_idtype_idskuhas_optionsrequired_optionscreated_at,{{ 1}}

表2:updated_at(attribute_id = 128): catalog_product_entity_intvalue_identity_type_idattribute_idstore_identity_id

表1和表2基于value

连接

表3:entity_id(attribute_id = 128): eav_attribute_optionoption_idattribute_id

表4:sort_order(我需要此处的值): eav_attribute_option_valuevalue_idoption_idstore_id

表3和表4基于value连接 问题是我不知道如何连接表2 - >表3(我应该使用其他表格)。

或者我没有使用正确的表格来获取此信息?我需要每个SKU的特定属性值(此属性是下拉选择)。

我找到了这个数据库图表:http://inchoo.net/wp-content/uploads/2010/09/MAGENTO_v1.3.2.4-Database_Diagram.pdf

1 个答案:

答案 0 :(得分:0)

您已经了解了这些表格,您只需要关注Magento的外键并将它们全部链接起来:

SELECT
    e.sku,
    ea.attribute_code,
    eaov.value AS option_value
FROM
    eav_attribute_option_value AS eaov    -- gets the option value
INNER JOIN
    eav_attribute_option AS eao
    ON eao.option_id = eaov.option_id     -- joins the option record
INNER JOIN
    eav_attribute AS ea
    ON ea.attribute_id = eao.attribute_id -- joins the attribute
INNER JOIN
    catalog_product_entity_int AS e_at    -- joins the product attributes
    ON e_at.attribute_id = eao.attribute_id
INNER JOIN
    catalog_product_entity AS e           -- joins the actual product
    ON e.entity_id = e_at.entity_id
-- specify the correct attribute
WHERE
    eaov.store_id = 0
    AND e_at.store_id = 0
    AND eao.attribute_id = 128;

请注意,此查询会生成大量数据,并且需要一些时间才能运行。

您最终会得到一份SKU,属性代码及其所有选项值的列表。显然MySQL的输出是扁平的,所以你需要解析输出并用其他语言对它做一些有用的东西。