如何将两个不同的ID合并到另一个表上?

时间:2019-07-02 13:37:07

标签: mysql

我正在尝试将同一张表中的两个值合并到另一个表中。

我有两个表:

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;

有人可以指导我该查询出现问题的地方吗?

1 个答案:

答案 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);