Преобразуйте SQL в 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

Есть идеи?

спасибо


person Rangel    schedule 13.01.2016    source источник
comment
Не могли бы вы показать нам схему базы данных?   -  person pneumatics    schedule 14.01.2016


Ответы (1)


Я попробую:

(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()))
person coleifer    schedule 16.01.2016
comment
спасибо Работает идеально для меня. - person Rangel; 09.03.2016