我正在尝试从"product“表复制/复制数据,并在"carrier”列中添加新的值。
例如:在"product“表中,我有一个需要分配给另一个表"carrier”的产品列表。目前在“运营商”表中有5个运营商。
在"product_carrier“表中,我想在这里创建新的条目。产品"sample- 1“分配给载体1、2、3和4。产品"sample-2”分配给载体5。
因此,它就变成了这样:
示例-1|1
示例-1|2
示例-1|3
示例-1|4
示例-2|5
这是我目前用来分配运营商的电子商务系统的数据库结构。
我的桌子是-
ps_product: id_product
ps_carrier: id_carrier
ps_product_carrier: id_product,id_carrier_reference
我的直觉是,我需要更新2组数据组。首先,将产品设置为载体(1,2,3,4),并将另一组产品分配给载体(5)。我将运行2组查询来实现这一点。
我不知道如何执行一个产品的副本,并为不同的载体创建插入多个值。目前,我有数千种产品需要进行相应的分配。
我不知道这是否可能,如果你有任何建议,我将不胜感激。
谢谢。
发布于 2018-01-29 17:03:41
假设在将所有要分配的产品分配给运营商时,您有一个名为table_with_product_list的表(或列表
您可以使用插入select
例如多载波(1,2,3,4)
insert into ps_product_reference (id_product, id_carrier_reference)
select table_with_product_list.product_id, t.id_carrier
from table_with_product_list
cross join (
select id_carrier from ps_carrier
where id_carrier in ( 1,2,3,4)
) t单载波(5)
insert into ps_product_reference (id_product, id_carrier_reference)
select table_with_product_list.product_id , 5
from table_with_product_list发布于 2018-01-29 18:49:59
由于数据库中没有任何内容表明产品应与载体1到4或载体5组合,因此您必须自己声明它们。在我看来,没有什么可以反对两个独立的INSERT语句。您可以使用文本编辑器或Excel,也可以使用自己快速编写的程序来构建VALUES子句:
insert into ps_product_carrier (id_product, id_carrier_reference)
values
(1111, 1),
(1111, 2),
(1111, 3),
(1111, 4),
(3333, 1),
(3333, 2),
(3333, 3),
(2222, 4),
... ;
commit;
insert into ps_product_carrier (id_product, id_carrier_reference)
values
(2222, 5),
(4444, 5),
... ;
commit;或者从上面的第二个语句开始,然后使用以下语句代替第一个查询:
insert into ps_product_carrier (id_product, id_carrier_reference)
select p.id_product, c.id_carrier
from ps_product p
cross join (select id_carrier from ps_carrier where id_carrier in (1,2,3,4)) c
where p.id_product not in
(select id_product from ps_product_carrier where id_carrier_reference = 5);https://stackoverflow.com/questions/48497173
复制相似问题