php - MySQL EAV 查询返回所有条目

标签 php mysql entity-attribute-value

我有一个看起来像这样的表(除了更多的条目),我需要从所有条目中获取 boatuid,其中 taxstatuscode = Paid 和 taxpaidtoname = NO。 但我无法让它工作。

表格:

boatuid    slug              fieldValue
20         taxstatuscode     Paid
20         taxpaidtoname     NO
24         taxstatuscode     Paid
24         taxpaidtoname     SE
25         taxstatuscode     Not Paid
25         taxpaidtoname     N/A

查询:

SELECT a.boatuid
FROM tx_gcnwnxmlparser_boats_specs
LEFT JOIN tx_gcnwnxmlparser_boats_specs a ON (a.slug = "taxstatuscode")
LEFT JOIN tx_gcnwnxmlparser_boats_specs b ON (b.slug = "taxpaidtoname")
WHERE a.boatuid IN(20,24,25)
AND a.fieldValue = "Paid" 
AND b.fieldValue = "NO"
GROUP BY a.boatuid

现在它将返回 IN() 中的所有 boatuid,而它应该只返回 20。 我对 EAV 很陌生,所以我做错了什么?

最佳答案

使用 EAV 的关键之一是使用“实体 ID”加入,以便您选择的属性属于同一实体。

SELECT a.boatuid
    FROM tx_gcnwnxmlparser_boats_specs a
        INNER JOIN tx_gcnwnxmlparser_boats_specs b 
            ON a.boatuid = b.boatuid /* "Entity ID" join condition */
                AND b.slug = 'taxpaidtoname'
    WHERE a.boatuid IN (20,24,25)
        AND a.slug = 'taxstatuscode'
        AND a.fieldValue = 'Paid'
        AND b.fieldValue = 'NO';

关于php - MySQL EAV 查询返回所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12177761/

相关文章:

python - mySQL 触发器在控制台插入后起作用,但在脚本插入后不起作用

c# - 如何用mysql填充gridview?

php - Magento - 检索具有特定属性值的产品

php - 动画 Gif 文件中是否嵌入了 GIFGIF?

php - 是否可以通过 1 个 SQL 查询(而不是 30 个)来完成?

php - 在 php 中使用 mysql 数据创建嵌套动态 json?

php - MySQL + PHP : ~500kb JSON file - Loading data as tables and fields VS as a single serialized variable

php - Magento -> 我希望管理员中的产品网格显示在前端

php - PHP中如何合并具有相同键和不同值的数组?

php - CodeIgniter 的喜欢和地点