ciao im cercando di raggiungere questa query crudo con sqlalchemy:da SQL prima al pallone-sqlalchemy
SELECT m.*, SUM(case when f.monkey = m.id then 1 else 0 end) as friends
FROM monkey as m
LEFT JOIN friendship as f ON m.id = f.monkey
GROUP BY m.id, m.name
order by friends desc
finora ottengo il risultato che voglio con questa query grezzo ma voglio essere in grado di .paginate loro così ho potuto continuare a lavorare correttamente
con le mie altre query quello che ho fatto è stato questo:
monkeys = models.Monkey.query.order_by(models.Monkey.name).paginate(page, 5, False)
abbastanza semplice e ho ottenuto quello che volevo, I belive devo fare qualcosa di simile
monkeys = models.Monkey.query.join(models.Friendship, db.func.count(models.Monkey.id == models.Friendship.monkey))
ma im non ottenere quello che voglio, lo so im manca la parte sum(), ma ho provato con func.c.count(), ma io non basta sapere come farlo funzionare, è posible per raggiungere questo in sqlalchemy? im utilizzando Postgres btw
In realtà lo fa , dal momento che ho chiesto di fare una ricerca e mi mancava il func.IF come hai fatto tu, grazie! – AbdulHamid