品牌打开新手推车。我试图做一些数据导出。
我需要的只是每个产品选项的产品ID。它听起来并不复杂,但老实说我不知道开放式购物车知道什么选择是什么产品。
示例产品选项:
我附上了我正在谈论的内容的图像。在方括号中的产品选项后,您可以看到产品的ID。但我无法弄清楚Open Cart如何将该选项与产品相关联。
最终目标是获取所有正在用作选项的product_id列表以及分配给它们的产品(仅限非必需品)
这样的事情:
WITH yt AS (SELECT * FROM your_table WHERE attribute=true)
SELECT t.* FROM yt t WHERE NOT EXISTS (SELECT 1 FROM yt WHERE id = t.reference_id)
如果product_option_value实际上包含该选项的product_id。如果我是傻瓜,请原谅我。
答案 0 :(得分: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
答案 1 :(得分: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,请告诉我,因为这感觉就像一个黑客。