[英]Insert value from one table/column based on value from another table/column
我正在尝试导入 csv,取消透视数据和 INSERT INTO product_attribute
表。
我有一个名为attributes
的表
属性ID | 属性名 | 属性值 |
---|---|---|
1 | 颜色 | 黑色的 |
2 | 颜色 | 绿色 |
3 | 颜色 | 蓝色的 |
4 | 尺寸 | 小的 |
5 | 尺寸 | 中等的 |
6 | 尺寸 | 大的 |
我有一张名为products
的表
product_id | 库存单位 | 数量 |
---|---|---|
1 | 测试3 | 13 |
2 | 测试2 | 17 |
3 | 测试1 | 5 |
我有一个名为product_attribute
的表,它链接在上面的两个表之间。
product_id | 属性ID |
---|
csv 数据如下导入到名为import
的临时文件夹中。
库存单位 | 颜色 | 尺寸 |
---|---|---|
测试1 | 黑色的 | 小的 |
测试2 | 绿色 | 大的 |
测试3 | 蓝色的 | 中等的 |
到目前为止,我已经设法使用以下查询取消透视 csv/表
SELECT sku, 'colour' attribute_name, colour attribute_value
FROM import
UNION ALL
SELECT sku, 'size' attribute_name, size attribute_value
FROM import
UNION ALL
然后数据看起来像这样
库存单位 | 属性名 | 属性值 |
---|---|---|
测试1 | 颜色 | 黑色的 |
测试2 | 颜色 | 绿色 |
测试3 | 颜色 | 蓝色的 |
测试1 | 尺寸 | 小的 |
测试2 | 尺寸 | 大的 |
测试3 | 尺寸 | 中等的 |
我需要以某种方式使用 unpivot 查询添加 INSERT INTO 查询,因此product_attribute
表如下所示
product_id | 属性ID |
---|---|
3 | 1 |
2 | 2 |
1 | 3 |
3 | 4 |
2 | 6 |
1 | 5 |
我相信子查询可以帮助我实现这一目标,但是当值基于另一列时,我不确定如何将其组合在一起。
任何帮助都非常感谢thankyou。
在子查询中使用您的代码并使用公共列将其连接到两个表。
INSERT INTO product_attribute(product_id, attribute_id)
SELECT p.product_id, a.attribute_id
FROM (
SELECT sku, 'colour' attribute_name, colour attribute_value
FROM import
UNION ALL
SELECT sku, 'size' attribute_name, size attribute_value
FROM import
UNION ALL
) as u
JOIN products p USING(sku)
JOIN attributes a USING(attribute_name, attribute_value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.