2013-10-30 110 views
0

我正在從php文件運行查詢,該文件從用戶處獲取其輸入。
每次用戶購買產品時,我都想插入一個新行。
什麼我的查詢看起來像:如果匹配IF條件兩次,則選擇行兩次

INSERT INTO purchases (name, price) 
SELECT product.name, product.price 
     WHERE product.name 
     IN (.........) 

(和在地方的點,一個php implode被使用,並且它可能是

('scarf', 'jeans', 'T-shirt', 'scarf') 


現在,這將是巨大的如果它做我想要的:
當一個顧客購買相同的產品 兩次(比如2個圍巾),然後 IN條件n只匹配一次(顯然,這是一個 IN聲明...),但我想匹配兩次。也就是說,如果客戶購買兩條圍巾,那麼我需要 purchases中的兩個新行。
是否有可能實現它,而沒有太多的代碼?

+0

爲什麼不只是添加'數量'字段購買? –

+0

你可以單獨爲每個產品調用它,而不是一次對所有產品調用 – wxyz

+0

@Denis號這僅僅是一個更復雜結構的例子,我只需要問什麼......無論如何,謝謝! wxyz:如果他們買10000襪子呢?然後我會做10000個查詢... – Nico

回答

1

如果他們買10000襪子怎麼辦?然後我會做10000個查詢...

用你目前的方法,你必須在這種情況下做10k查詢。或者10K工會,這是幾乎相同的:

insert into ... 
select ... where product_name = ... 
union all 
select ... where product_name = ... 
union all 
... 

出於這個原因,和每個我的評論,我會強烈建議您重新審視您的架構,並添加顯然急需quantity場。

+0

我認爲我喜歡這個想法,我剛剛在回覆您對該評論的回覆後才發現,注意到即使它可能有點慢,也是一個時刻用戶可以等待。謝謝 – Nico

+0

謝謝你的提示。最後我只是做了INSERT ... SELECT ...; INSERT ... SELECT ...; INSERT ... SELECT ...; ......'它只是做我想做的事情,但當然我想知道是否有可能只用一個查詢來完成。歡呼並再次感謝。 PS:'UNION'和'UNION ALL'不適合我... MySQL語法錯誤 – Nico

相關問題