2016-08-26 13 views
0

オープンカートに新しいスパンキング。私はいくつかのデータをエクスポートしようとしています。オープンカート - 製品オプションの製品IDを取得する - sql

私が必要とするのは、各製品オプションの製品IDです。それは複雑に聞こえることはありませんが、私は正直なところ、どのようなオプションがどの製品であるかをカートがどのように知っているかを理解できません。

例の製品オプション:

enter image description here

私は私が話しているかの画像を添付しました。角括弧内の製品オプションが製品のIDであることがわかります。しかし、私はOpen Cartがそのオプションを製品にどのように関連づけているかを理解できません。

最終目標は、オプションとして使用されているとどのような製品、それらが割り当てられているすべてのproduct_idsのリストを取得することです(唯一の非必須)

したがって、このような何か:

select pov.* 
from product_option_value pov 
where pov.option_id in (select option_id from product_option 
         where required = 0 and price > 0); 

product_option_valueに実際にそのオプションのproduct_idがある場合私が愚かであれば私を許してください。

答えて

0

を以下のようなものを試してみてください - 私はそれを考え出しました最終的に。

SELECT pov.product_id, substring_index(substring_index(ovd.name, '[', -1),']', 1) as option_product_id, p.model 
FROM product_option_value pov 
LEFT JOIN option_value ov 
ON pov.option_value_id = ov.option_value_id 
LEFT JOIN option_value_description ovd 
ON ov.option_value_id = ovd.option_value_id 
LEFT JOIN product p 
ON p.product_id = pov.product_id 
WHERE ovd.name LIKE '%[%' 
AND ovd.name NOT LIKE '%FREE%' 
AND pov.option_id IN (SELECT option_id FROM product_option WHERE required = 0); 

これのほとんどはかなり簡単です。私はいくつかの好きなものを使って製品IDを持つ製品オプションを取得しています。 selectの部分文字列内の部分文字列を使用して角括弧の間のすべてを取得します。これは、例えば製品のだから、私たちにオプションのリストと、彼らは

に割り当てられているプロダクトID(私ではなく、ASCIIので、ここでの画像のための十分な担当者を持っていない)

+------------+-------------------+-------+ 
| product_id | option_product_id | model | 
+------------+-------------------+-------+ 
|  1234 |    223 | mmss1 | 
|  1234 |    224 | mmss1 | 
|  1225 |    221 | mmss3 | 
|  1226 |    229 | mmss6 | 
+------------+-------------------+-------+ 

を与える

1234には2つのオプションがあり、商品IDは223と224です。

誰かが製品IDを名前列からリッピングするのではなく、これを行うより良い方法を見つけた場合は、ハックのように感じます。

0

包みなさい誰がこれを行う必要がある.. ..私はあなたが製品のテーブルを持っている、あなたは、各製品に対してoptionIDを表示する必要があることを前提と

SELECT pd.ProductName+'['+Convert(VARCHAR(50),po.option_id)+']',..... 
FROM product_option_value pov 
    JOIN product pd on pd pov.product_id=pd.product_id 
    JOIN product_option po on po.option_id=pov.option_id 
WHERE po.required = 0 and po.price > 0 
+0

私は恐れていません。角括弧内の製品IDは、データベース内の製品名に追加されません。それは単なるフロントエンドの機能です。しかし、私はそれをリバースエンジニアリングするために実際にコードベースを持っていません。私はOpenCart DBアーキテクチャに精通している人に期待しています。 – Frank

関連する問題