Sql 尝试编写查询以获取帖子和关联附件的列表
我正在使用Go和sqlx编写一个列表端点。此端点还可以接受筛选器 我想获得帖子及其相关附件的列表 我正努力想知道我该怎么做 这里是我的Sql 尝试编写查询以获取帖子和关联附件的列表,sql,postgresql,go,Sql,Postgresql,Go,我正在使用Go和sqlx编写一个列表端点。此端点还可以接受筛选器 我想获得帖子及其相关附件的列表 我正努力想知道我该怎么做 这里是我的Post模型的一个片段,我正在尝试从Post中获取一部分 type Post struct { ID int `db:"id"` // ... Attachments []*Attachment } 这是附件 type Attachment struct { ID int `db:"id"` // ... } 我已经让我的getOne端点
Post
模型的一个片段,我正在尝试从Post
中获取一部分
type Post struct {
ID int `db:"id"`
// ...
Attachments []*Attachment
}
这是附件
type Attachment struct {
ID int `db:"id"`
// ...
}
我已经让我的getOne端点工作了,这很简单-
我只需要做一个简单的Select查询,就可以按id获取帖子,而要获取相关的附件,我只需要将附件
和帖子与附件
连接起来
不幸的是,当每篇文章可能有0个或超过0个附件时,我很难弄清楚如何获得一个带有附件的文章列表
这样做容易吗?我只是想知道如何从列表部分开始,因为我知道如何获得一个,而不是如何获得多个
我得到的一个方法是:
然而,这是坏的吗?这似乎太简单了,但也是业余的,因为它对每个项目进行了大量的查找(我将每次查找的结果上限为50个):(我不确定sqlx,但是使用标准的
数据库/sql
包,您只需编写两个查询并执行每个查询,或者您也可以同时执行它们并使用该方法。第一个查询将获得帖子列表,第二个查询将从第一个查询中获得与帖子相关联的附件列表,这是can可以使用join和第一次查询中使用的相同where子句完成。然后,当您扫描Go中的行时,收集帖子,然后收集附件并手动将它们与已收集的帖子关联。您可以将帖子收集到地图中以便于查找,然后可以通过l将每个附件与帖子关联通过使用地图和附件的post_id来创建该帖子。这是我在前面评论中的意思的一个示例。我自己还没有测试过这种方法,所以你可能需要对其进行一些调整,以使其满足你的需要。像ORM这样的工具可以通过自动化大部分内容来实现这一点。Thx!这很有效!