如何在 bookshelfJS 中编写嵌套查询
how to write nested query in bookshelfJS
以下是示例 Db 结构
我想要 bookshelfjs 中的结果,以便
1) 活动 table
中的所有列
2) 包含实例计数的一列属于广告系列
3) 包含实例计数的一列属于一个广告系列并且具有 status_id = 3
我知道原始查询:
select campaign.*,
(select count(*) from instance where instance.campaign_id=campaign.id) as totalInstances,
(select count(*) from instance where instance.campaign_id=campaign.id and instance.status.id=3) as duplicateInstances
from campaign
我已经使用
尝试过相同的查询
qb.select(rawQuery); // rawQuery= above query
但运气不好。我怎样才能做到这一点?
knex('campaign').select([
'campaign.*',
(builder) => builder
.count('*')
.from('instance')
.where('instance.campaign_id', knex.raw('??', ['campaign.id']))
.as('totalInstances'),
(builder) => builder
.count('*')
.from('instance')
.where('instance.campaign_id', knex.raw('??', ['campaign.id']))
.where('instance.status.id', 3)
.as('duplicateInstances')
]).toSQL()
select
"campaign".*,
(select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id") as "totalInstances",
(select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id" and "instance"."status"."id" = ?) as "duplicateInstances"
from "campaign"
以下是示例 Db 结构
我想要 bookshelfjs 中的结果,以便
1) 活动 table
中的所有列2) 包含实例计数的一列属于广告系列
3) 包含实例计数的一列属于一个广告系列并且具有 status_id = 3
我知道原始查询:
select campaign.*,
(select count(*) from instance where instance.campaign_id=campaign.id) as totalInstances,
(select count(*) from instance where instance.campaign_id=campaign.id and instance.status.id=3) as duplicateInstances
from campaign
我已经使用
尝试过相同的查询 qb.select(rawQuery); // rawQuery= above query
但运气不好。我怎样才能做到这一点?
knex('campaign').select([
'campaign.*',
(builder) => builder
.count('*')
.from('instance')
.where('instance.campaign_id', knex.raw('??', ['campaign.id']))
.as('totalInstances'),
(builder) => builder
.count('*')
.from('instance')
.where('instance.campaign_id', knex.raw('??', ['campaign.id']))
.where('instance.status.id', 3)
.as('duplicateInstances')
]).toSQL()
select
"campaign".*,
(select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id") as "totalInstances",
(select count(*) from "instance" where "instance"."campaign_id" = "campaign"."id" and "instance"."status"."id" = ?) as "duplicateInstances"
from "campaign"