2017-05-30 126 views
1

所以我試圖做一個小型的網上商店。我有2個表格:cart_productsorder_products。在這些表格中,可以添加到購物車中的兩種類型的商品:promotionproducts。這兩種類型的物品存儲在不同的表上,稱爲:promotionsproducts從一個表插入數據到另一個 - MySQL

最初,所有產品/促銷活動都添加到cart表中,一旦用戶簽出,它們將轉移到orders表並從cart表中刪除。

如果所選項目是產品,則默認情況下promotion_id值設置爲0。反之亦然,如果選擇的項目是促銷活動。這是我的基本結構:

cart_products

---------------------------------------------------------------------------------- 
| cart_products_id | cart_id | product_id | promotion_id  | quantity | 
---------------------------------------------------------------------------------- 
| 6    |  1  | 5   | 0     | 2 
--------------------------------------------------------------------------------- 

order_products


---------------------------------------------------------------------------------- 
| order_id | user_id | product_id | promotion_id  | price | quantity | 
---------------------------------------------------------------------------------- 

我在試圖LEFT JOIN產品的問題/促銷活動來獲得所選擇的price項目。這是我迄今爲止的查詢。

INSERT INTO order_details (order_id, user_id, product_id, promotion_id, price, quantity) 
VALUES(
    '6', 
    '7', 
    (SELECT 
    cart_products.product_id, 
    cart_products.promotion_id, 
    IF(cart_products.promotion_id = '0', products.price, promotions.price), 
    cart_products.quantity 

    FROM cart_products 


    LEFT JOIN products 
    ON cart_products.product_id = products.product_id 

    LEFT JOIN promotions 
    cart_products.promotion_id = promotions.promotion_id 

    WHERE cart_products.cart_id = '6') 
) 

但是,這給我一個錯誤Not unique table/alias。有誰知道我可以怎麼做呢?任何幫助是極大的讚賞!

回答

3

而是定義值像你這樣,你可以簡單地選擇常量,這樣就可以使用INSERT INTO SELECT語法:

INSERT INTO order_details (order_id, user_id, product_id, promotion_id, price, quantity) 
SELECT (
    '6', 
    '7', 
    cart_products.product_id, 
    cart_products.promotion_id, 
    IF(cart_products.promotion_id = '0', products.price, promotions.price), 
    cart_products.quantity 
    FROM cart_products 
    LEFT JOIN products 
    ON cart_products.product_id = products.product_id 
    LEFT JOIN promotions 
    ON cart_products.promotion_id = promotions.promotion_id 
    WHERE cart_products.cart_id = '6' 
) 

而且,我相信你忘了一個「ON」的條款在你的第二個左加入

+1

謝謝,我最後不得不把'SELECT'放在括號裏面,否則它給了我一個錯誤。但我得到它的工作。 –

+0

很高興我的回答可以接受你@BrianMoreno – AlVaz

相關問題