sql - 如何在数组中检索 INNER JOIN 的输出?

标签 sql postgresql join sequelize.js

我有这个 SQL 查询

 '(SELECT “A”.”id" AS “aId”, “A”.”name”, “A”.”updatedAt" AS “aUpdatedDate”, “B”.”name” AS “b.name”, “B”.”status” AS “b.status”,  FROM “A” INNER JOIN “B” ON “A”.”id" = “B”.”a_id” WHERE EXISTS (SELECT “status” FROM “B” WHERE “B”.”a_id” = “A”.”id" AND “B”.”status" IN (‘pending’, ‘failed’))) OFFSET ? LIMIT ?’;

这将返回所需的数据,但问题是我很想以这种格式获取数据。这是预期的输出:
{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    Bs: [
        {
             name: 'b-one',
             status: 'completed'
        },
        {
             name: 'b-two',
             status: 'pending'
        }
    ]
}

但是输出将 B 的每个实例分开,而 B 又会复制返回的 A。返回的实际输出是这样的
{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    'b.name': 'b-one',
    'b.status': 'completed'
},
{
    aid: 1,
    name: 'nameOne',
    aUpdatedDate: '2018-09-10',
    'b.name': 'b-two',
    'b.status': 'pending'
},

对于一些上下文,您可以查看 StackOverflow 链接,该链接解释了我为什么使用 WHERE EXISTS 子句以及有关初始问题的一些背景知识。

最佳答案

我认为您正在使用 raw : true ,请将其删除或使其为 false :

sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT , raw : false }).then(results => {
  console.log(results)
})

你很高兴去。

关于sql - 如何在数组中检索 INNER JOIN 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956656/

相关文章:

sql - Postgres - 如何使用最后几行的 AVG 并将其与另一列相乘?

php - 错误 Symfony Doctrine PostgreSQL : SQLSTATE[42703]: Undefined column: 7 ERROR

sql - 将阶段标识符分配给启停事件表

sql - 如何从 TSQL 调用 webservice? (SQL SERVER 2000)

SQL Server TRY...CATCH 与 XACT_STATE

同表中记录的 MySQL 连接类型

mysql - SQL - 当记录不存在时不从另一个表中检索记录

sql - 重新排序 sql 数据库中的行 - 想法

postgresql - 无法在 WSL Ubuntu 上启动 postgresql

mysql - Mysql 数据透视表