2つのテーブルの結合については多くの情報がありますが、Selectには興味がありませんが、更新には興味があります(これも役に立ちませんでした:他の2つのテーブルの値でテーブルの列を更新します)。
Magentoで属性を注文する必要があります。私が計画している方法は次のとおりです。2つの関連するテーブル(eav_attribute_optionとeav_attribute_option_values)があります。それらはoption_idによって結合されます。eav_attribute_option_valuesテーブル(値列)のアルファベット順に従って、 eav_attribute_optionテーブルのsort_orderフィールドを更新する必要があります。
私がこれまでに持っているのはこれです:
SELECT *
FROM eav_attribute_option_value, eav_attribute_option
WHERE eav_attribute_option_value.option_id = eav_attribute_option.option_id
ORDER BY value
私が入手したもの:
value_id option_id store_id value option_id_1 attribute_id sort_order
13534 5681 0 ADULT 5681 131 0
13543 5710 0 Yellow 5710 134 0
13547 502 0 Yellow - 10A 502 127 0
13548 3001 0 Yellow - 120cm 3001 127 0
13549 503 0 Yellow - 12A 503 127 0
次のクエリで、必要なものがわかります。
SELECT t.*, @i:=@i+1 AS iterator
FROM (SELECT value, eav_attribute_option.option_id
FROM eav_attribute_option_value, eav_attribute_option
WHERE eav_attribute_option_value.option_id = eav_attribute_option.option_id
ORDER BY value) t,(SELECT @i:=0) foo
私はこれを手に入れます:
value option_id iterator
ADULT 5681 1
Yellow 5710 2
Yellow - 10A 502 3
Yellow - 120cm 3001 4
Yellow - 12A 503 5
Yellow - 14A 504 6
大きな質問: eav_attribute_optionのsort_order列を、リンクフィールドとしてoption_idを使用して、「iterator」列の値で更新するにはどうすればよいですか?
eav_attribute_optionから*を選択します
option_id attribute_id sort_order
1 18 0
2 18 1
3 127 0
4 127 0
5 127 0
6 127 0
ここから「イテレータ」クエリを取得しました。MySQLを使用して、テーブルのレコードインデックスを含む列を生成するにはどうすればよいですか。
編集:これが答えです
UPDATE eav_attribute_option, (SELECT t.*, @i:=@i+1 AS iterator
FROM
(SELECT value, eav_attribute_option.option_id
FROM eav_attribute_option_value, eav_attribute_option
WHERE eav_attribute_option_value.option_id = eav_attribute_option.option_id
ORDER BY value) t,(SELECT @i:=0) x) tbl2
SET eav_attribute_option.sort_order = tbl2.iterator
WHERE eav_attribute_option.option_id = tbl2.option_id