gpt4 book ai didi

ruby-on-rails - 通过关系对具有完全相同 has_many 的模型进行分组

转载 作者:行者123 更新时间:2023-11-29 13:15:59 25 4
gpt4 key购买 nike

如果之前有人问过这个问题,请原谅我,我很难想出好的搜索查询。

假设我有 2 个模型,帖子和标签。帖子通过枢轴模型 PostTags 具有许多标签。

我想做的是将具有完全相同标签组合的帖子分组。我知道如何对具有任何相同标签的帖子进行分组,但我在这方面遇到了困难。

例如,如果我有一个 ID 为 1 的帖子,并且该帖子有两个标签 - 一个 ID 为 5,另一个 ID 为 7。我将有 2 个 PostTag,一个 post_id 为 1 ,tag_id 为 5,然后另一个 post_id 为 1,tag_id 为 7。我有另一个 Post 的 id 为 3,它还有 2 个 PostTags - 一个 post_id 为 3,tag_id 为 5,另一个 post_id 为 3,tag_id 为 7。我想将它们组合在一起,这样我就可以计算出有多少帖子同时具有这两个标签,而没有其他标签。

谢谢,我希望我能够正确解释这一点。

最佳答案

我认为您可以在嵌套查询中执行类似的操作:

SELECT tag_ids,
string_agg(post_id, ',')
FROM (
SELECT post_id,
string_agg(tag_id, ',') as tag_ids
FROM post_tags
GROUP BY post_id)
GROUP BY tag_ids;

解释:

首先在内部查询中,您连接按 post_id 分组的 tag_ids,因此您可以获得每个帖子的标签组合。

然后在外部查询中,您通过 tag_id 的组合连接 post_id,因此您可以获得每个标签组合的所有 post_id。

这可能还没有结束,您可以进一步处理帖子 ID,或修改查询以获取您需要的任何数据。

希望对您有所帮助!

关于ruby-on-rails - 通过关系对具有完全相同 has_many 的模型进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48919063/

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