私は次のMysql構造を持っています:
jss_products
productID
price1
jss_extrafields_values
exvalID
productID
extraFieldID
jss_extrafields_prices
exvalID
price1
各製品にはいくつかのエクストラフィールドがあります。私は興味を持っているextraFieldID = 1
の値を使用して、price1
すべてを更新したいと思います。次のクエリがありますが、すべてのエントリではなく、の製品ごとの最初のエントリのみが更新されます。jss_extrafields_prices
jss_products.price1
jss_extrafields_price
jss_extrafields_prices
の価格を正規化して、の価格を持つ製品の20.00
場合、の関連する各エントリがにjss_extrafields_prices
なるようにしようとしていCURRENTPRICE - 20
ます。
それは理にかなっていますか?これが私がこれまでに持っているものです
UPDATE jss_extrafields_prices AS JEP
INNER JOIN (
SELECT P.productID, P.price1 AS P1, EP.price1, EP.exvalID FROM jss_products AS P
INNER JOIN jss_extrafields_values AS EV
ON P.productID = EV.productID
INNER JOIN jss_extrafields_prices AS EP
ON EV.exvalID = EP.exvalID
WHERE EV.extraFieldID = 1
GROUP BY P.productID
ORDER BY P.productID DESC, EP.price1 DESC
) AS X
ON JEP.exvalID = X.exvalID
SET JEP.price1 = JEP.price1 - X.P1
内部クエリが次のようなものを返すことを期待します:
productID = 1090
P1 = 20.8333333
price1 = 20.8333333
exvalID = 3236
1090productID
には3つの価格設定オプションがあり、その基本価格は、現在の価格から基本価格を引いたものになるように、20.83333
一致するすべての製品を更新したいと思います。jss_extrafields_prices
それは役に立ちますか?