【问题标题】:Ruby Sequel Querying table and return JSON formatRuby Sequel 查询表并返回 JSON 格式
【发布时间】:2018-07-21 08:15:34
【问题描述】:

我在每个日期都有一个每个人的报告表,如下所示:

+-----+------+----------+------+------------+
| id  | name | received | sent | created_on |
+-----+------+----------+------+------------+
| 1   | A    | 1        | 2    | 2018-07-20 |
| 2   | B    | 3        | 4    | 2018-07-20 |
| 3   | C    | 5        | 6    | 2018-07-20 |
| 4   | A    | 1        | 2    | 2018-07-21 |
| 5   | B    | 1        | 2    | 2018-07-21 |
| 6   | C    | 1        | 2    | 2018-07-21 |
| ... | ...  | ...      | ...  | ...        |
+-----+------+----------+------+------------+

鉴于我需要查询包含开始日期和结束日期的日期范围的表,我怎么能得到这样的结果:

[
  {
    "name": 'A',
    "received": [1 1 ...],
    "sent": [2 2 ...]
  },
  {
    "name": 'B',
    "received": [3 1 ...],
    "sent": [4 2 ...]
  },
  {
    "name": 'C',
    "received": [5 1 ...],
    "sent": [6 2 ...]
  }
]

【问题讨论】:

  • “鉴于我需要查询包含开始日期和结束日期在内的日期范围的表,我怎么能得到这样的结果” - 您可以通过编写一个转换上述内容的程序来获得它将 SQL 结果写入上述 JSON 文档。如果您编写的程序遇到问题,请仔细阅读您正在使用的所有方法、类、模块和库的文档,在调试器中单步执行代码,编写测试,用笔和纸跟踪执行,如果您仍然无法解决问题……等待一周左右,然后从顶部开始……
  • …新鲜的眼睛和新鲜的头脑。然后,如果您仍然有问题,您可以阅读如何构建 minimal reproducible example 并在 Stack Overflow 上写一个狭窄、具体、集中的问题。
  • 试图给出一些想法。该表是一个文本文件?想想 CSV。可以查询数据库吗?想想像 Sequel 这样的宝石。由你决定。我们等待阅读您的代码。
  • 您在使用 Sequel gem 吗? (你有这个问题的续集标签)
  • @trueinViso 是的,我使用 Sequel gem。我对它很陌生,所以我想知道在 Sequel 中实现这一目标的有效方法。

标签: sql json ruby sequel


【解决方案1】:
DB[:reports]
  .select(:name, :received, :sent)
  .where(created_at: (Date.today - 4)..(Date.today))

我显然使用了您可以修改的任意日期范围。

这是假设您将连接对象存储在名为DB 的常量中。您可以找到更多关于查询数据库的信息here

如果您在配置 sequel 以与您的数据库一起使用时需要更多帮助,您可以查看 gems documentation

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多