Knex: Sous-requĂȘte dans la clause "from" utilisant une autre instance de knex

CrĂ©Ă© le 22 oct. 2014  Â·  3Commentaires  Â·  Source: knex/knex

Salut!
J'ai cette requĂȘte :

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

et je veux envelopper cette requĂȘte comme :

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

Comment utiliser la variable "scores" à l'intérieur de from() ????

question

Commentaire le plus utile

Oh, tu peux juste faire :

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

Le .as est ignorĂ© Ă  moins qu'il ne se trouve dans une sous-requĂȘte, et le clone n'est nĂ©cessaire que si vous mutez la requĂȘte scores ailleurs.

Ou tu peux faire :

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

Tous les 3 commentaires

Quelle est la requĂȘte que vous cherchez finalement Ă  gĂ©nĂ©rer ?

Le dernier:

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

La requĂȘte est correcte, mais je souhaite rĂ©utiliser la variable "scores"

Oh, tu peux juste faire :

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

Le .as est ignorĂ© Ă  moins qu'il ne se trouve dans une sous-requĂȘte, et le clone n'est nĂ©cessaire que si vous mutez la requĂȘte scores ailleurs.

Ou tu peux faire :

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'));
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

zettam picture zettam  Â·  3Commentaires

lanceschi picture lanceschi  Â·  3Commentaires

npow picture npow  Â·  3Commentaires

mattgrande picture mattgrande  Â·  3Commentaires

arconus picture arconus  Â·  3Commentaires