[英]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.