私はstock
テーブルを持っています。適切なqntyで適格な株式行を取得するための計算が必要です。SET/SPを使用せずにMySQLクエリで入力/以前の結果に基づいて計算
Stock
-----------------------------------------------------------------
| id | item | batch_number | expiry_date | current_stock |
-----------------------------------------------------------------
1 1 BAT-1-1 15 Jun 2016 10
2 1 BAT-1-2 20 Jun 2016 5
-----------------------------------------------------------------
私はitem = 1
& quantity = 13
として入力を持っています。 >eligible = input
、他eligible = current_stock
とinput -= eligible
として入力をデクリメント - current_stock >= input
場合は最寄りの有効期限は)
2好ましい)
1:
私の予想クエリ出力は
----------------------------------------------------------------------------
| id | item | batch_number | expiry_date | current_stock | eligible |
----------------------------------------------------------------------------
1 1 BAT-1-1 15 Jun 2016 10 10
2 1 BAT-1-2 20 Jun 2016 5 3
----------------------------------------------------------------------------
ロジックです
3)次の最も近い有効期限にdecemを使用して手順2を繰り返します処理する行がなくなるか、十分な数量があるまで入力値を入力してください。
SPまたはSETを使用せずにmysqlクエリで可能ですか? Bcoz私はJavaアプリケーションで結果のクエリを実装する必要があります。私はHibernateを使用しているので、SQLまたはhqlまたは条件(可能な場合)としてクエリを実行することができます。
私は上記のロジックのが、さらなる計算に
SELECT
id
item,
batch_number,
expiry_date,
current_stock,
CASE WHEN current_stock >= 13 THEN 13 ELSE current_stock END AS eligible
FROM
stock
WHERE
item = 1
ORDER BY
expiry_date
を入力値をデクリメントせずにクエリを書いてきた。しかし、それは私が後に入力値をデクリメントしていませんでした2列目だってためeligible = 3
を生成しません。最初の行の計算。どんな助けでも大歓迎です。
あなたが悪いスケールます示唆しているようなソリューションを提供します。 '@変数'を使うとより効率的になります – Strawberry
@Strawberry、 '@変数'を使用すると、並行してクエリを実行することができますか? –
これはセッション固有なので、はいです。 – Strawberry