2
単純化するために、モデルStockIOLogがあるとします。Django ORMクエリーの書き方
class StockIOLog(models.Model):
pid = models.IntegerField()
name= models.CharField(max_length=50)
type= models.IntegerField()
stock = models.IntegerField()
それはデータ次のものが含まれます。
pid | name | batch | type | quantity
------------------------------------------------
1 | Napa | AB | 0 | 100
------------------------------------------------
1 | Napa | AA | 0 | 100
------------------------------------------------
2 | Amod | AA | 0 | 100
------------------------------------------------
2 | Amod | CA | 0 | 100
------------------------------------------------
1 | Napa | AB | 1 | 10
------------------------------------------------
1 | Napa | AB | 1 | 5
------------------------------------------------
1 | Napa | AA | 1 | 20
------------------------------------------------
2 | Amod | AA | 1 | 10
------------------------------------------------
2 | Amod | AA | 1 | 50
------------------------------------------------
2 | Amod | CA | 1 | 5
------------------------------------------------
2 | Amod | CA | 1 | 15
タイプ0は、製品を購入されたことを意味し、タイプ1は、今、私はすべての製品のバッチ式の総株式を計算したい、製品が消費されたことを意味します。
次のSQLクエリ
SELECT pid, name, batch, SUM(in) - SUM(out) as stock FROM (
SELECT pid, name, type SUM(quantity) as in, 0 as out from `qset` WHERE type=0 GROUP BY pid,type,batch as a
UNION
SELECT pid, name, type 0 as in, SUM(quantity) as out from `qset` WHERE type=1 GROUP BY pid,type,batch as b
) ac table_a
を実行することにより、私は、クエリセット
DjangoのORMで同様のことを行う方法pid | name | batch | stock
-----------------------------------
1 | Napa | AB | 85
-----------------------------------
1 | Napa | AA | 80
-----------------------------------
2 | Amod | AA | 40
-----------------------------------
2 | Amod | CA | 80
を次のですか?
に従うことによって、辞書に
purchased
とconsumed
を得ることができます。あなたはシナリオを説明できますか? –@ Md.Al-Amin質問をもっと簡単に更新しました –