Oi!
Eu tenho esta dúvida:
var scores = Bookshelf.knex('audition_vote').sum('voting_power as score').groupBy('audition_id')
e eu quero 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');
});
console.log (topScores.toString ()) imprime
select distinct `score` from (select sum(`voting_power`) as `score` from `audition_vote` group by `audition_id`) as `scores
Como usar a variável "pontuação" dentro de () ????
Qual é a consulta que você está procurando gerar?
O último:
select distinct `score` from (select sum(`voting_power`) as `score` from `audition_vote` group by `audition_id`) as `scores`
A consulta está certa, mas quero reutilizar a variável "pontuações"
Oh, você pode apenas fazer:
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());
O .as
é ignorado a menos que esteja dentro de uma subconsulta, e o clone só é necessário se você estiver alterando a consulta scores
outro lugar.
Ou você pode fazer:
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'));
Comentários muito úteis
Oh, você pode apenas fazer:
O
.as
é ignorado a menos que esteja dentro de uma subconsulta, e o clone só é necessário se você estiver alterando a consultascores
outro lugar.Ou você pode fazer: