メモ的な意味合いを込めて
###Fruitテーブル
id | name |
---|---|
1 | apple |
2 | banana |
3 | orange |
###Sellテーブル
id | fruit_id | count |
---|---|---|
1 | 1 | 1 |
2 | 3 | 3 |
3 | 1 | 2 |
4 | 2 | 8 |
5 | 1 | 2 |
flask_sqlalchemyにおいて、上記の2つのテーブルから一番出荷された数が多い果物順に並べ替えたい
場合は以下のようにする。
例
# flask_sqlalchemyを使用したdbインスタンスが既に存在するとして
from . import db
from sqlalchemy import desc
fruits = (
db.session.query(Fruit, db.func.sum(Sell.count).label('count'))
.filter(Fruit.id == Sell.fruit.id)
.group_by(Fruit.id)
.order_by(desc('count'))
.all()
)
fruitsの中身は以下のようになる。
index | Fruit.id | Fruit.name | count |
---|---|---|---|
1 | 2 | banana | 8 |
2 | 1 | apple | 5 |
3 | 3 | orange | 3 |