我有一个这样的表posts

mysql - 通过两个表之间的联接按多个项目过滤-LMLPHP

在女巫中的另一个表post_filters中,我为每个帖子存储了过滤器:

mysql - 通过两个表之间的联接按多个项目过滤-LMLPHP

哪里:

mysql - 通过两个表之间的联接按多个项目过滤-LMLPHP

mysql - 通过两个表之间的联接按多个项目过滤-LMLPHP

我希望所有apples


color redYellow以及
来自country EnglandFrance


如何通过postsposts_filters之间的联接做到这一点?在两个表之间只能进行一个联接吗?

我已经尝试过类似的方法:

SELECT
    posts.*,
    a1.*,
    a2.*
FROM posts
    LEFT JOIN post_filters a1 ON posts.ID=a1.post_id AND a1.filter_id=1
    LEFT JOIN post_filters a2 ON posts.ID=a2.post_id AND a2.filter_id=2
WHERE
a1.selected_filter_item IN (2,3)
AND
a2.selected_filter_item IN (1,3)


它不能正常运行,我只想加入一个。

最佳答案

SELECT
    p.*,
    f.*,
    fi.*
FROM posts p
    JOIN post_filters pf ON pf.post_id = p.ID
    JOIN filters f ON f.filter_id = pf.filter_id
    JOIN filters_items fi ON fi.filters_item = pf.selected_filter_item AND fi.filter_id = f.filter_id
WHERE
f.filter_name IN ('country','color') AND
fi.filter_item_name IN ('England','France','red','yellow')


试试这个查询

关于mysql - 通过两个表之间的联接按多个项目过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37971256/

10-16 23:15