Knex: Subconsulta en la cláusula "from" usando otra instancia de knex

Creado en 22 oct. 2014  ·  3Comentarios  ·  Fuente: knex/knex

¡Hola!
Tengo esta consulta:

var scores = Bookshelf.knex('audition_vote').sum('voting_power as score').groupBy('audition_id')

y quiero envolver esta consulta como:

var topScores = Bookshelf.knex.distinct('score').from(function() {
  // This works but i want to use "scores" variable
  this.sum('voting_power as score').from('audition_vote').groupBy('audition_id').as('scores'); 
});

impresiones de console.log (topScores.toString ())

select distinct `score` from (select sum(`voting_power`) as `score` from `audition_vote` group by `audition_id`) as `scores

¿Cómo utilizar la variable "puntuaciones" dentro de () ????

question

Comentario más útil

Oh, puedes simplemente hacer:

var scores = Bookshelf.knex('audition_vote')
   .sum('voting_power as score')
   .groupBy('audition_id')
   .as('scores');
var topScores = Bookshelf.knex.distinct('score').from(scores.clone());

El .as se ignora a menos que esté dentro de una subconsulta, y el clon solo es necesario si está mutando la consulta scores otro lugar.

O podrías hacer:

var scores = Bookshelf.knex('audition_vote')
   .sum('voting_power as score')
   .groupBy('audition_id');
var topScores = Bookshelf.knex.distinct('score').from(scores.clone().as('scores'));

Todos 3 comentarios

¿Cuál es la consulta que busca generar en última instancia?

El último:

select distinct `score` from (select sum(`voting_power`) as `score` from `audition_vote` group by `audition_id`) as `scores`

La consulta es correcta, pero quiero reutilizar la variable "puntuaciones".

Oh, puedes simplemente hacer:

var scores = Bookshelf.knex('audition_vote')
   .sum('voting_power as score')
   .groupBy('audition_id')
   .as('scores');
var topScores = Bookshelf.knex.distinct('score').from(scores.clone());

El .as se ignora a menos que esté dentro de una subconsulta, y el clon solo es necesario si está mutando la consulta scores otro lugar.

O podrías hacer:

var scores = Bookshelf.knex('audition_vote')
   .sum('voting_power as score')
   .groupBy('audition_id');
var topScores = Bookshelf.knex.distinct('score').from(scores.clone().as('scores'));
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

marianomerlo picture marianomerlo  ·  3Comentarios

rarkins picture rarkins  ·  3Comentarios

koskimas picture koskimas  ·  3Comentarios

saurabhghewari picture saurabhghewari  ·  3Comentarios

fsebbah picture fsebbah  ·  3Comentarios