在 SQLite 上获取具有 JOINed 值的数组

Get array with JOINed values on SQLite

我在 NodeJS 上使用 SQLite3 并且我在内存中有一个数据库用于像这样的测试目的,其中 table1 和 table2 之间存在关系。表 2 中的 fk 字段是表 1 中的 id

表 1

id value1 value2
1 v1_t1 v2_t1

表 2

id value1 fk
1 v1_t2 1
2 v2_t2 1

当我运行这个查询时:

SELECT * from table1 t1 INNER JOIN table2 t2 ON t2.fk=t1.id WHERE t1.id=1;

结果是

[
  {
    id: 1,
    value1: v1_t2,
    fk:1
  },
  {
    id: 2,
    value1: v2_t2,
    fk:1
  }
]

但我想要这样的东西:

[
  {
    fk: 1,
    value1: "v1_t1",
    value2: "v2_t1",
    result: [
      {
        id: 1,
        value1: "v1_t2",
        fk: 1
      },
      {
        id: 2,
        value1: "v2_t2",
        fk: 1
      }
    ]
  }
]

这可以使用 SQLite 还是我应该使用非关系数据库?

提前致谢。

您可以使用 SQLite 的 JSON1 Extension 函数:

SELECT json_object(
           'fk', t2.fk, 
           'value1', t1.value1, 
           'value2', t1.value2,
           'result',  
           json_group_array(json_object('id', t2.id, 'value1', t2.value1, 'fk', t2.fk))           
       ) col
FROM table1 t1 INNER JOIN table2 t2 
ON t2.fk = t1.id 
WHERE t1.id = 1;

参见demo