2013-10-30 63 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

相关问题