私は、OpenCart eCommerce を使用している 1 つの電子ショップで管理者として働いています。最近、バルク製品に特別価格を追加して、数日間稼働させておくように依頼されました。もちろん、管理ページで1つずつ変更できます。問題は、phpMyAdmin を使用して変更する方法です。
(Opencart バージョン 2.1.0.1)
25 ユーロの商品が 46 個あり、20 ユーロに特別価格を追加する必要があります。
価格を更新する必要があるテーブルは
oc_product_special
更新する必要がある列は
oc_product_special.price
もちろん、テーブルから25ユーロかかる製品が必要です
oc_product
このテーブルから製品を取得し、特別価格を 20€ に追加するには</p>
問題は、これら2つのテーブルを接続する方法です。これを達成できるように、SQLクエリを実行する特別価格を追加できます。
oc_product & oc_product_special , update this column oc_product_special.price
このSQLクエリを実行しようとしましたが、エラーが発生しました
UPDATE `oc_product_special`.price
SET `oc_product_special`.price = 16.1290
FROM `oc_product`
INNER JOIN `oc_product_special`
ON `oc_product`.product_id =`oc_product_special`.product_id
WHERE`oc_product`.price = 20.1612;
**** 価格は税抜きです 25€ / 1,24(税率) = 20.1612€</p>
エラー
#1064 - SQL 構文にエラーがあります。oc_product
2 行目の 'FROM INNER JOIN oc_product_special
ON oc_product
.product_id ='付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
**編集
Sql クエリの更新
UPDATE oc_product_special AS ps
INNER JOIN oc_product op ON ps.product_id = op.product_id
set ps.price = 16.1290
where op.price = 20.1612
しかし問題は、0行が影響を受けたということです。(クエリには 0.0003 秒かかりました)、これらの価格で選択クエリを実行すると、結果が得られます。
select *
from oc_product as op
where op.price=20.1612
行 0 ~ 29 を表示しています (合計 46、クエリに 0.0010 秒かかりました)
***** 2回目の更新
まず走った
DELETE FROM `oc_product_special`
WHERE product_id IN
(
SELECT product_id
FROM oc_product p
WHERE p.price = 20.1612
);
「これらの製品から既存のスペシャルを削除する」ことができるので、このクエリは問題なく実行されました
その後、挿入クエリを実行しようとしました
INSERT INTO `oc_product_special` (`product_special_id`, `product_id`, `customer_group_id`, `priority`, `price`, `date_start`,`date_end`)
VALUES
(
SELECT NULL, 78, 1, 0, 16.1290, 0000-00-00, 0000-00-00
FROM oc_product p
WHERE p.price = 20.1612
);
テーブルのデータに関するデータを調整しました。しかし、私はこのエラーを受け取ります
#1064 - SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、4 行目の 'SELECT NULL, 78, 1, 0, 16.1290, 0000-00-00, 0000-00-00 FROM oc_product p ' 付近で使用する正しい構文を確認してください。