Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 尝试编写查询以获取帖子和关联附件的列表_Sql_Postgresql_Go - Fatal编程技术网

Sql 尝试编写查询以获取帖子和关联附件的列表

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端点

我正在使用Go和sqlx编写一个列表端点。此端点还可以接受筛选器

我想获得帖子及其相关附件的列表

我正努力想知道我该怎么做

这里是我的
Post
模型的一个片段,我正在尝试从
Post
中获取一部分

type Post struct {
  ID int `db:"id"`
  // ...
  Attachments []*Attachment
}
这是
附件

type Attachment struct {
  ID int `db:"id"`
  // ... 
}
我已经让我的getOne端点工作了,这很简单-

我只需要做一个简单的Select查询,就可以按id获取帖子,而要获取相关的附件,我只需要将
附件
帖子与附件
连接起来

不幸的是,当每篇文章可能有0个或超过0个附件时,我很难弄清楚如何获得一个带有附件的文章列表

这样做容易吗?我只是想知道如何从列表部分开始,因为我知道如何获得一个,而不是如何获得多个

我得到的一个方法是:

  • 获取帖子列表

  • 对于该列表中的每个id,执行附件查找,如果存在>0,则将其附加到该帖子项的附件字段


  • 然而,这是坏的吗?这似乎太简单了,但也是业余的,因为它对每个项目进行了大量的查找(我将每次查找的结果上限为50个):(

    我不确定sqlx,但是使用标准的
    数据库/sql
    包,您只需编写两个查询并执行每个查询,或者您也可以同时执行它们并使用该方法。第一个查询将获得帖子列表,第二个查询将从第一个查询中获得与帖子相关联的附件列表,这是can可以使用join和第一次查询中使用的相同where子句完成。然后,当您扫描Go中的行时,收集帖子,然后收集附件并手动将它们与已收集的帖子关联。您可以将帖子收集到地图中以便于查找,然后可以通过l将每个附件与帖子关联通过使用地图和附件的post_id来创建该帖子。这是我在前面评论中的意思的一个示例。我自己还没有测试过这种方法,所以你可能需要对其进行一些调整,以使其满足你的需要。像ORM这样的工具可以通过自动化大部分内容来实现这一点。Thx!这很有效!