メモ的な意味合いを込めて
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 |