首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从不同的分类法(和+ OR)中按标记进行选择

从不同的分类法(和+ OR)中按标记进行选择
EN

Stack Overflow用户
提问于 2014-09-19 09:25:37
回答 1查看 69关注 0票数 0

页面上有过滤器,用户可以在其中选择任意数量的标记。这些标记是按分类法分组的。在使用这种筛选器时,所选的文章必须至少有一个从每个选定的分类法中选择的标记。我相信(为了简单起见,我们可以这么说)我们必须在不同的分类法和操作符之间选择标记,在一个分类法中为标记选择OR操作符。

我的桌子结构:

分类法字段: id

标记字段: id,tax_id

文章字段: id

ArticlesTags字段: id、tag_id、article_id

我可以使用什么MySQL查询或查询来获取带有这些过滤器的文章?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-19 14:12:14

我在两个查询中完成了这个任务。

从过滤器的选择,我们可以得到分类和标签的id。

首先,我们制作了临时表,在其中,我们根据每一篇文章的分类对标记进行分组。

代码语言:javascript
复制
CREATE TEMPORARY TABLE IF NOT EXISTS mem_table ( INDEX(article_id) ) ENGINE=MEMORY AS 
    (
        SELECT articletags.article_id, articletags.tag_id, tags.tax_id 
        FROM aricletags
        LEFT JOIN tags
        ON articletags.tag_id=tag.id
        WHERE articletags.tag_id IN (sel_tag1_id, sel_tag2_id, sel_tag3_id...)
        GROUP BY article_id, tax_id"
    );

第二,我们按分类法在临时表中搜索,每一篇文章都必须有与我们在过滤器中选择的分类组一样多的行。

代码语言:javascript
复制
SELECT articels.id
FROM articles
INNER JOIN mem_table
ON mem_table.article_id=article.id
WHERE mem_table.tax_id IN (sel_tax1_id, sel_tax2_id, sel_tax3_id...)                
GROUP BY article.id
HAVING COUNT(article.id) = sel_taxonomy_count
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25930604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档