在Knex中表和选择之间的SQL连接语句

时间:2018-12-30 16:45:01

标签: sql postgresql knex.js

我有SQL语句:

   select from resources 
          left join ( select resource_id, sum(price) as PostScoreSum from 
                      prices where '2019-06-8' < dateto and '2019-06-15' > 
                      datefrom group by resource_id ) BB on 
                     resources.resources_id = BB.resource_id")

使用Knex,我可以将该语句写为knex.raw('.....'),但是在此knex语句之后,我不能使用Modify(具有语句链,knex.raw('...' ).modify ...是不可能的)。是否可以在表和选择之间用Knex编写此联接,而无需使用raw。

1 个答案:

答案 0 :(得分:1)

不清楚您的实际问题是什么,但随后将产生您上面的查询-

const sql = knex('resources')
   .leftJoin((query) => {
      query
         .columns([
            'resource_id',
            knex.raw('sum(price) as PostScoreSum')
         ])
         .from('prices')
         .where('dateto', '>', '2019-06-8')
         .where('datefrom', '<', '2019-06-8')
         .groupBy('resources_id')
         .as('BB')
   }, 'resources.resources_id', 'BB.resource_id')
   .toSQL();
console.log(sql) ;