打开购物车 - 获取产品选项的产品 ID - sql

Open Cart - Get the product id of a product option - sql

打开购物车的全新品牌。我正在尝试进行一些数据导出。

我只需要每个产品选项的产品 ID。这听起来并不复杂,但老实说我无法弄清楚 open cart 如何知道什么选项是什么产品。

示例产品选项:

我附上了一张我正在谈论的图片。可以看到在方括号中的产品选项之后是产品的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。如果我很愚蠢,请原谅我。

尝试类似下面的操作。我假设您有一个产品 table 并且您必须针对每个产品显示 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

以防其他人需要这样做 - 我最终弄明白了。

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 更好的方法来执行此操作,请告诉我,因为这感觉像是黑客攻击。