2017-12-04 7 views
0

マイクエリ:MYSQL数学を使ってデータベースを更新していますか?

UPDATE `settings_products` SET `stock_osrs` = SUM(stock_osrs - 50) 

私は現在、管理者によって設定された在庫レベルを表示する私の管理パネルでの在庫システムを持っていますが、私はそう完了したすべての支払いが離れて取るAPIを作成しています株式。

注文金額がクエリのように "50"であり、これをstock_osrsから取り除きたいとします。

これを行うにはどうすればいいですか?

編集:PHPを使用して計算を行ってからテーブルを更新することができますが、これは「50,000」を必要とするため信頼性が低くなると感じています - 50 = "45,950"とその番号をデータベースに掲載する。

このとき、コードを混乱させる別の順序があった可能性があります。そのため、これを達成するためにSQLを使用する必要があります。

+2

合計ビットが必要ありません –

+0

私たちは常に新しいコーダーを支援し、サポートしてうれしいですが、***あなたはする必要がありますあなた自身をまず助けてください。 : - )***あなたが問題を抱えている場合は** [**もっと研究をしています**](https://meta.stackoverflow.com/q/261592/1011527)**あなたが試したことを投稿してください** **動作していないことの明確な説明**を提供し、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供します。 [質問する](http://stackoverflow.com/help/how-to-ask)の良い質問をお読みください。 [ツアーに参加する](http://stackoverflow.com/tour)と[this](https://meta.stackoverflow.com/q/347937/1011527)を必ず読んでください。 –

答えて

3
UPDATE `settings_products` SET `stock_osrs` = `stock_osrs` - 50 

SUMそれを試してみてください)レコードのグループで動作する - 例えば、SELECT SUM(stock_osrs) FROM settings_products WHERE...はあなたのレコードのグループのためのstock_osrsの合計を与えるだろう。 SUM()を使用して、あるテーブルのレコードのSUM()を取得し、別のテーブルのフィールドに格納することは可能ですが、それはもう少し複雑になります。単純な内部1レコードの数学の場合は、方程式を含めます。 UPDATE inventory SET available = onhand - onorderなどの複数のフィールドを含めることもできます。私はこのテーブルの主キーがidであると仮定しています

UPDATE 
    settings_products AS lg 
    INNER JOIN 
    (SELECT 
     l.`stock_osrs` AS stock_osrs, 
     COUNT(l.id) AS total, 
     SUM(l.stock_osrs) AS SUM 
    FROM 
     stock_osrs l 
    GROUP BY l.`stock_osrs`) sub 
    ON lg.`stock_osrs` = sub.stock_osrs SET lg.stock_osrs = sub.sum - 50 ; 

+0

パーフェクト、助けてくれてありがとう! – rakupu

0

フィールドでマイナス50をしようとしていると思うので、これはうまくいくはずです。

UPDATE `settings_products` SET `stock_osrs` = `stock_osrs` - 50 
0

このクエリを使用すると、問題が解決する場合があります。

あなたは単純に数学演算を直接実行することができます。

UPDATE settings_product SET stock_osrs=stock_osrs-50; 

私はそれが働いていた上記のクエリを確認し、(

-1

は、私はあなたがこのような何かをしたいと思います。あなたはそれを少し変更することができますが、これはあなたが探しているもののようなものです...

関連する問題