关于#sqlserver#的问题,如何解决?

我是sqlserver数据库
我有2个表,一个车间表

id车间编号
11
22

一个物料表

id物料编号
1a
2b

这两个表没有关联

我有个需求,想对这两个表合并,做一个唯一编号的字段

id车间编号物料编号唯一编号
11a1a
21b1b
32a2a
42b2b

我不想给2个基础表加关联字段
我想问,用视图能不能做到?
如果有其他方法应该怎么做?

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/209242
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用视图或者使用UNION操作符将两个表合并为一个新表并添加唯一编号字段。下面是具体步骤:

    1. 创建新表并添加唯一编号字段:

    可以使用以下语句创建新表并添加唯一编号字段:

    CREATE TABLE new_table (
      id INT PRIMARY KEY AUTO_INCREMENT,
      workshop_code VARCHAR(10),
      material_code VARCHAR(10),
      unique_code VARCHAR(20)
    );
    

    这条语句创建了一个名为"new_table"的表,有四个字段:id为自增主键,workshop_code和material_code为原表中的车间编号和物料编号,unique_code为唯一编号字段。

    1. 向新表中插入数据:

    可以使用以下语句向新表中插入数据:

    INSERT INTO new_table (workshop_code, material_code, unique_code)
    SELECT workshop_code, material_code, CONCAT(workshop_code, '_', material_code, '_', id) AS unique_code
    FROM workshop_table
    UNION ALL
    SELECT workshop_code, material_code, CONCAT(workshop_code, '_', material_code, '_', id) AS unique_code
    FROM material_table;
    

    这条语句首先使用UNION ALL操作符将两个表合并,然后为每一行添加唯一编号。unique_code字段通过CONCAT函数组合了车间编号、物料编号和自增主键,并将它们用下划线连接起来,以创建唯一编号。最后,所有数据都被插入到了新表中。

    1. 创建视图(可选):

    如果不想在数据库中创建一个新表,可以考虑使用视图来实现同样的效果。以下是创建视图的步骤:

    CREATE VIEW merged_table AS
    SELECT workshop_code, material_code, CONCAT(workshop_code, '_', material_code, '_', id) AS unique_code
    FROM workshop_table
    UNION ALL
    SELECT workshop_code, material_code, CONCAT(workshop_code, '_', material_code, '_', id) AS unique_code
    FROM material_table;
    

    这条语句创建了一个名为"merged_table"的视图,它将两个表合并并为每一行生成唯一编号。可以像使用表一样使用这个视图,但需要注意的是,视图只是一个虚拟的表,不会存储任何数据。每次使用视图时都会动态计算数据。

    以上就是将两个没有关联的表合并为一个新的表并添加唯一编号字段的具体步骤。

视图的方式是可以,主要在于你的主键字段怎么定义了。2个没有相关的表,合并成1张表,怎么对应呢?多对多还是一对多的呢?