Mysql 通过数据库查询(EAV)获取产品报告

Mysql 通过数据库查询(EAV)获取产品报告,mysql,magento,magento2,entity-attribute-value,Mysql,Magento,Magento2,Entity Attribute Value,我正在尝试了解更多关于EAV的信息,并且在magento 2示例数据数据库上进行了一些测试 我只想检索产品id和产品描述,但与目录产品实体表和目录产品实体表中的产品总量不匹配: 目录产品实体中有2046种产品表: 如果使用以下查询,将得到2052个结果: SELECT product.entity_id as "Description",description.value FROM catalog_product_entity_text description,catalog_product_

我正在尝试了解更多关于EAV的信息,并且在magento 2示例数据数据库上进行了一些测试

我只想检索产品id和产品描述,但与
目录产品实体
表和
目录产品实体
表中的产品总量不匹配:

目录产品实体中有2046种产品
表:

如果使用以下查询,将得到2052个结果:

SELECT product.entity_id as "Description",description.value FROM catalog_product_entity_text description,catalog_product_entity product where product.entity_id = description.entity_id ORDER BY product.entity_id

我假设在某些情况下,实体id与文本表中的多行匹配。可能存在除描述之外的文本属性

试试这个:

SELECT product.entity_id as Product_id,
  COUNT(*) AS count,
  GROUP_CONCAT(description.value) AS Description
FROM catalog_product_entity_text description
LEFT OUTER JOIN catalog_product_entity product ON product.entity_id = description.entity_id 
GROUP BY product.entity_id
ORDER BY product.entity_id
我不熟悉Magento的EAV表,但我认为该表应该有一列用于属性标识符以及实体id。如果您只需要描述,而不需要其他文本属性,则可能需要根据属性类型进行筛选


注意:我修改了你的查询,使用了现代的
JOIN
语法。您不应该使用“逗号样式”连接,它们在1992年就过时了。

这似乎有效,感谢语法更正!