Оператор соединения SQL между таблицей и выбором в Knex - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть оператор 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 (toиметь цепочку утверждений, knex.raw ('...'). изменить ... не представляется возможным).Можно ли написать это объединение в Knex, между таблицей и выбором без использования raw.

1 Ответ

0 голосов
/ 31 декабря 2018

Непонятно, в чем на самом деле ваша проблема, но следующие приведут к вашему запросу-

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) ;
...