将SQL转换为Peewee以组装排名

时间:2016-01-13 21:42:16

标签: python peewee

我需要将SQL查询转换为peewee指令。

我的SQL是:

SELECT 
    (IFNULL(SUM(`conquista`.`pontos`), 0) + SUM(`statusfase`.`pontos`)) AS `total_pontos`,
    `jogador`.`id` AS `usuario_id`
FROM
    ((`jogador`
    LEFT JOIN `conquista` ON ((`jogador`.`id` = `conquista`.`usuario_id`)))
    JOIN `statusfase` ON ((`jogador`.`id` = `statusfase`.`usuario_id`)))
GROUP BY `jogador`.`id`
ORDER BY `total_pontos` DESC

任何想法?

TKS。

1 个答案:

答案 0 :(得分:0)

我会开枪:

(Jogador
 .select(
   (fn.IFNULL(fn.SUM(Conquista.pontos), 0) +
    fn.SUM(StatusFase.pontos)).alias('total_pontos'),
   Jogador.id.alias('usuario_id'))
 .join(Conquista, JOIN.LEFT_OUTER, on=(Jogador.id == Conquista.usuario))
 .switch(Jogador)
 .join(StatusFase, on=(Jogador.id == StatusFase.usuario))
 .group_by(Jogador.id)
 .order_by(SQL('total_pontos').desc()))