0
あなたは皆がうまくやってくれることを願っています!ポストグルで複数の結合を使った一括更新
複数の結合を使用してテーブルに対して一括更新を実行しようとしていますが、これを行うことができません。
表1:items
|id|total_price|created_at|
表2:prices
|id|company_id|item_id|special_price|created_at|
________________________________________________
| 1| 1 | 100 | 20.0 | 2017-01-01|
| 2| 1 | 101 | 30.0 | 2017-01-01|
| 3| 1 | 102 | 70.0 | 2017-01-01|
| 4| 1 | 103 | 90.0 | 2017-01-01|
表3:ranges
|id|company_id|range_from|range_to|commission_percent|
______________________________________________________
| 1| 1 | 10.0 | 50.0 | 5.0 |
| 2| 1 | 51.0 | 100.0 | 10.0 |
私は3つのテーブルを持っています最終結果は私が達成しようとしています:私はマスSQLの下に基づいprices
テーブルを更新したいと思います:
UPDATE prices
SET special_price = (
CASE
WHEN (special_price BETWEEN ranges.range_from AND ranges.range_to) AND prices.company_id = ranges.company_id
THEN
ROUND((special_price + (special_price * commission_percent/100)), 2)
ELSE
special_price
END
)
FROM ranges
WHERE prices.company_id = 1
結果は以下のようになる
:これまでのところ
|id|company_id|item_id|special_price|created_at|
________________________________________________
| 1| 1 | 100 | 21.0 | 2017-01-01|
| 2| 1 | 101 | 31.5 | 2017-01-01|
| 3| 1 | 102 | 77.0 | 2017-01-01|
| 4| 1 | 103 | 99.0 | 2017-01-01|
制限私は実行しています
- 定義された最初の範囲では常に実行され、定義された2番目の範囲では実行されません。
- 私はそれを行うために様々な方法を試しましたが、満足のいく結果を出すものはありませんでした。
IMP私はprices
テーブル内のレコードの数百万人のためにこれをやってます
助けてください/アドバイスを!
可能な重複(https://stackoverflow.com/questions/2763817/sql-update-fields-of-one-table-from-fields-of-another-one) – JGH