0

phpユーザーから入力を取得するファイルからクエリを実行しています。
ユーザーが商品を購入するたびに、新しい行を挿入したいと考えています。
私のクエリは次のようになります。

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

(そして、ドットの代わりにphp implodeが使用されます。

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


さて、これが私が望んでいたことであれば素晴らしいことです:顧客が同じ製品を 2 回
購入した場合(たとえば、2 つのスカーフ)、条件が一致するのは 1 回だけです (明らかに、これはステートメントです...)。 2回一致させます。つまり、顧客が 2 つのスカーフを購入した場合、2 つの新しい行が必要になります。 ININpurchases
コードをあまりいじらずに、それを達成することは可能でしょうか?

4

1 に答える 1

1

彼らが10000個の靴下を買ったらどうしますか? 次に、10000 回のクエリを実行します…</p>

現在のアプローチでは、その場合、必然的に 10k のクエリを実行する必要があります。または、ほぼ同等の 10k ユニオン:

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

このため、私のコメントによると、スキーマを再検討し、明らかに必要なquantityフィールドを追加することを強くお勧めします。

于 2013-10-30T09:09:07.750 に答える