gpt4 book ai didi

php - 标签系统 - 使用 'some tags' 和不使用 'other tags' 进行搜索

转载 作者:行者123 更新时间:2023-11-29 13:18:53 26 4
gpt4 key购买 nike

我试图这样做:

两个输入:

1.“搜索带有标签的问题:” 2.“并且没有标签”

TABLE: questions (
-id,
-url,
.
.
.
-other data
)

TABLE: tags (
-id,
-tag
)

TABLE: tags_and_questions (
-id,
-question_id,
-tag_id
)

SELECT `question_id` FROM `tags_and_questions` WHERE `tag_id` IN ($ok_tags_id) AND `tag_id` NOT IN ($no_tags_id)

表tags_and_questions中的数据示例:

question_id   tag_id
1 1
1 2
1 3

当$no_tags_id = 3时,获取tags_and_questions的结果是数组([0] => 1, [1] => 1)

这个表可以实现吗?

最佳答案

解决此问题的一种方法是使用带有 having 子句的聚合:

SELECT `question_id`
FROM `tags_and_questions`
GROUP BY question_id
HAVING sum(`tag_id` IN ($ok_tags_id)) > 0 and
sum(`tag_id` NOT IN ($no_tags_id)) = 0;

这将返回包含一个或多个“ok”标签且不包含“no”标签的问题。

当然,此结构假设您实际上将 SQL 创建为字符串以将其传入。否则,“列表”将被视为单个值。

编辑:

如果查询没有返回任何行,那么我怀疑这是因为您的列表作为单个字符串输入。在MySQL中,你可以这样做:

SELECT `question_id`
FROM `tags_and_questions`
GROUP BY question_id
HAVING sum(find_in_set(`tag_id`, $ok_tags_id) > 0) > 0 and
sum(find_in_set(`tag_id`, $no_tags_id) > 0) = 0;

关于php - 标签系统 - 使用 'some tags' 和不使用 'other tags' 进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com