我正在尝试将同一张表中的两个值合并到另一个表中。
我有两个表:
Table: rawmaterials
Columns:
id int(11) AI PK
product_code varchar(255)
product_description varchar(255)
allergens varchar(255)
Table: finished_product
Columns:
id int(11) AI PK
product_code varchar(255)
product_description varchar(255)
products_containing varchar(255)
以下是“原材料”表中的一些数据示例:
原材料:
1 0207WIP Pearl Barley Wheat
2 0202WIP Red Split Lentils n/a
3 0205WIP Yellow Split Lentils n/a
我正在尝试在表finished_product
中创建一个Mix。
作为示例,我将混合代码编码为1010
,将其命名为Mix
,并且包含是我目前停留在的部分...
我需要将raw_materials中的product_code id的1和2合并到包含products_products表的products列中。
到目前为止,这是我尝试过的操作,只是返回结果而不更新表。我想弄清楚它是如何工作的:
select concat(product_code where id =1, product_code where id =2) from rawmaterials;
有人可以指导我该查询出现问题的地方吗?
答案 0 :(得分:0)
您将这样做:
select group_concat(product_code) from rawmaterials where id in (1,2);
但这对于您的数据库来说是一个糟糕的设计;您将无法轻松地进行操作,例如查找具有特定给定过敏原的所有成品。
尝试这样的方法:
create table allergen (
id int auto_increment primary key,
name varchar(255);
);
create table allergen_rawmaterials (
allergen_id int,
rawmaterials_id int,
primary key (allergen_id, rawmaterials_id),
key (rawmaterials_id)
);
create table rawmaterials (
id int auto_increment primary key,
product_code varchar(255),
product_description varchar(255)
);
create table rawmaterials_finished_product (
rawmaterials_id int,
finished_product_id int,
primary key (finished_product_id, rawmaterials_id),
key (rawmaterials_id)
);
create table finished_product (
id int auto_increment primary key,
product_code varchar(255),
product_description varchar(255)
);
然后创建成品,然后分别插入其原材料:
insert into rawmaterials_finished_product (rawmaterials_id, finished_product_id) values
(1, 1001),
(2, 1001);