簡體   English   中英

根據另一個表/列中的值插入一個表/列中的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM