我想创建一个SQL查询来获取catalog_product_entity表中每个产品的SKU,以及来自attribute_option_value表的值,以获取我知道属性代码的特定属性。 我不知道如何从第一个提到的表到第二个表。 有任何想法吗?谢谢
表1:catalog_product_entity
(我需要这里的SKU):
entity_id
,entity_type_id
,attribute_set_id
,type_id
,sku
,has_options
,required_options
,created_at
,{{ 1}}
表2:updated_at
(attribute_id = 128):
catalog_product_entity_int
,value_id
,entity_type_id
,attribute_id
,store_id
,entity_id
表1和表2基于value
表3:entity_id
(attribute_id = 128):
eav_attribute_option
,option_id
,attribute_id
表4:sort_order
(我需要此处的值):
eav_attribute_option_value
,value_id
,option_id
,store_id
表3和表4基于value
连接
问题是我不知道如何连接表2 - >表3(我应该使用其他表格)。
或者我没有使用正确的表格来获取此信息?我需要每个SKU的特定属性值(此属性是下拉选择)。
我找到了这个数据库图表:http://inchoo.net/wp-content/uploads/2010/09/MAGENTO_v1.3.2.4-Database_Diagram.pdf
答案 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的输出是扁平的,所以你需要解析输出并用其他语言对它做一些有用的东西。