2012-05-09 30 views
2

我想從一個表「虹吸」數據到另一個表。我碰到的問題是,新表中的一些數據是靜態的,其他數據正在從現有表中複製。讓我從顯示我試圖運行的查詢開始:MySQL:INSERT INTO與靜態和動態值混合

INSERT INTO current_cart 
    (cart_ID, 
    cart_PO, 
    cart_user, 
    cart_date, 
    cart_qty, 
    cart_sku, 
    cart_description, 
    cart_price, 
    cart_linetotal) 
VALUES 
    ('$cartID', 
    '$poNumberNew', 
    '$email', 
    '$lineDate', 
SELECT 
    orderdetail_qty, 
    orderdetail_sku, 
    orderdetail_description, 
    orderdetail_price, 
    orderdetail_linetotal 
FROM orderdetail 
WHERE orderdetail_custemail = $email AND orderdetail_po = $poNumber) 

很明顯,所有的PHP變量都是事先聲明的。基本上我所運行的是一個購物車。該查詢將從先前的訂單中獲取物品並將其輸入到新的購物車中,以便我們的客戶可以根據先前的訂單開始新訂單。

我碰到的問題是當記錄的某些數據是靜態的(cartID,poNumberNew,email和lineDate)和其他信息來自不同的表格時,如何將記錄插入表中?我希望我可以做到這一點,而無需創建一個循環來重複查詢,無論客戶重複的訂單數量是多少......我認爲這會讓我們的網站顯着陷入困境。

我見過真棒答案無數的其他許多網站開發的問題,我已經在過去,我希望在計算器社區能幫助我在這裏...

謝謝!

回答

2

在SELECT語句中,您可以有一個返回常量的列。例如,

INSERT INTO current_cart 
    (cart_ID, 
    cart_PO, 
    cart_user, 
    cart_date, 
    cart_qty, 
    cart_sku, 
    cart_description, 
    cart_price, 
    cart_linetotal) 

SELECT 
    '$cartID', 
    '$poNumberNew', 
    '$email', 
    '$lineDate', 
    orderdetail_qty, 
    orderdetail_sku, 
    orderdetail_description, 
    orderdetail_price, 
    orderdetail_linetotal 
FROM orderdetail 
WHERE orderdetail_custemail = $email AND orderdetail_po = $poNumber) 
+0

哇......太簡單了......這麼有效!謝謝,TheVedge! – BelgianAlien

+0

隨時!它也適用於插入,刪除,更新以及任何你通常擁有列名的地方。 – ESG