2017-11-08 15 views
0

いいえ、これはこれです。 私は挿入したい金額だけを挿入したいだけで、列の合計が私の金額(例えば112)を超えていない場合にのみ挿入したいと思います。私は売上請求書IDが入っている請求書金額を合計しています。 £20の額。条件が満たされた場合に限り、Mysqlを挿入します。

だから、私は基本的には、 と言っている質問が必要です。金額+ "列の合計"が総量よりも小さいか等しい場合、金額を挿入します。だからここ

が私のテーブルレイアウトが

sipID|SalesInvoice_id|Date|Amount 
1|116|07/11/2017|2| 
2|115|07/11/2017|88| 
3|116|07/11/2017|22| 
7|115|07/11/2017|22| 

ですだから私はので、私はSELECTクエリが最初に動作するようになって始めて、ここで私の作業選択クエリが

SELECT SUM(`Amount`) FROM `salesinvoice_payments` 
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`)+20 <= 112 AND `SalesInvoice_id`=115 

あるINSERT SELECTはうまくいくかもしれないと思いました基本的に現時点では、追加する金額は20になるようにハードコーディングしています。 この選択ステートメントの処理内容は次のとおりです。 SUM(Amount)+20が私の合計である112以下の場合にのみ値を取得します。 これはうまく動作します。

私の元の質問に戻る。条件が真である場合にのみ挿入したいと思います。 私は、これは例えば

INSERT INTO `salesinvoice_payments` (`Amount`)VALUES (20) 
SELECT SUM(`Amount`) FROM `salesinvoice_payments` 
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`)+20 <= 100 AND `SalesInvoice_id`=115 
+1

'INSERT INTO ... SELECT'は' VALUES'書なしです。 https://dev.mysql.com/doc/refman/5.7/en/insert-select.html –

+0

はい、selectはwhere句のように使用されています。条件が満たされたら値20を挿入したいと思います。私はそれをどのようにレイアウトするのかは分かりませんが、私はこれまでに取り組んできたものを入れました。私は間違っているクエリーを知っているが、それを正しく置く方法はわからない。 –

+0

私は何がうまくいくのか答えを投稿しました。 –

答えて

3

INSERT INTO ... SELECTを動作させるための適切なフォーマットがVALUESの文なしであるように見えることはできません。

クエリ

INSERT INTO `salesinvoice_payments` (`Amount`) 
SELECT 20 FROM `salesinvoice_payments` 
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`) + 20 <= 100 AND `SalesInvoice_id`= 115 
+0

私はselect文に値を入れることを考えなかった。ありがとう。私はとても近かった。 –

関連する問題