2016-01-19 30 views
1

考慮下面的示例表:將數據插入臨時MySQL表與案件

CREATE TABLE items 
    (`id` int, `productName` varchar(7), `price_new` decimal(10,2), `price_used` varchar(55)) 
; 

INSERT INTO items 
    (`id`, `productName`, `price_new`, `price_used`) 
VALUES 
    (1, 'cup', 10.50, 5.50), 
    (2, 'plate', 9.50, 4.50), 
    (3, 'mug', 8.50, 3.50) 
; 

對於一個應用程序,我想基於什麼,用戶必須創建一個臨時表。 用戶會說'新'的條件'杯'。 (存儲在一個PHP數組)

我期望的臨時表會是這樣的:

CREATE TEMPORARY TABLE IF NOT EXISTS tempTable (
     `id` INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, 
      `name` varchar(7) NULL, 
      `itemCondition` varchar(7) NULL, 
      `price` decimal(10,2) NULL 
     ); 

我的問題是這樣的: 如果我創建臨時表我怎麼可能插入「杯」和「新」 MySQL根據itemCondition從items表中選擇價格? 僞代碼:

Insert: 
(1, 'cup', (
    if itemCondition == 'new' 
    (select Items.price_new where items.productName = 'cup') 
    ELSE 
    (select Items.price_used where items.productName = 'cup') 

謝謝您的幫助。

回答

1

問題是,除非將數據插入到temptable中,否則sql將不知道imtemCondition字段的值。 'new'值在插入語句中作爲一個固定值提供。

您將需要一個存儲過程,該存儲過程根據參數值選擇價格,然後將該價格插入臨時表中,或者可以使用php實現相同的邏輯。

步驟:

  1. 提供用戶ID,名稱和項目條件。
  2. 根據商品的條件選擇價格。
  3. 將所有數據插入臨時表。
+0

謝謝,我認爲這可能是這種情況......但希望它不是。 – lje