【发布时间】:2021-03-17 09:27:07
【问题描述】:
注意:我使用的是 MySQL 5.7。
我有两个名为 Post、Comment 的表
schema "posts" do
field: id, string
field :title, :string
field :slug, :string
field :active, :boolean, default: true
timestamps()
end
schema "comments" do
field: id, string
field: post_id, string
field :title, :string
field :body, :string
field :email, :string
field :meta, :map
field :active, :boolean, default: false
timestamps()
end
我使用Ecto 进行Elixir 中的数据库查询。目前,我正在尝试获取数据库中的所有帖子,以及这些帖子的最新评论(如果有)。例如:
Post 1 ──── post1__last_comment_id
Post 2 ──── post2__last_comment_id
Post 3 ──── nil
我已经在post.id == comment.id 上尝试了join_left,但它返回了与该帖子相关的所有cmets,而不仅仅是最新的。
我也尝试了grouping_by comment.post_id 并获得了最大id,虽然这有效,但这不是所需的解决方案,因为它需要基于date 而不是id 的评论。
我查找了如何做到这一点,虽然我发现很少有原始 SQL 查询的解决方案,但我找不到任何与 Ecto 类似的东西,也无法弄清楚如何将它从 SQL 转换为 Ecto。
是否可以使用 Ecto 完成?
【问题讨论】: