我有一个这样的表posts
:
在女巫中的另一个表post_filters
中,我为每个帖子存储了过滤器:
哪里:
我希望所有apples
与color
red
或Yellow
以及
来自country
England
和France
。
如何通过posts
和posts_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/