2016-08-26 151 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有兩個選項,他們的產品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數據庫架構的人。 – Frank