打开购物车 - 获取产品选项的产品 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 更好的方法来执行此操作,请告诉我,因为这感觉像是黑客攻击。
打开购物车的全新品牌。我正在尝试进行一些数据导出。
我只需要每个产品选项的产品 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 更好的方法来执行此操作,请告诉我,因为这感觉像是黑客攻击。