gpt4 book ai didi

mysql - 如何从 2 列表转换多对多关系?

转载 作者:行者123 更新时间:2023-11-29 08:57:16 25 4
gpt4 key购买 nike

假设我有一个数据库表(下面的一些示例代码),它存储两个列表(在我的例子中是需求和测试用例)之间的关系,并且我想创建一个表,其中行显示测试用例,列显示需求,并有一个指示符显示存在关系。

一些限制

  • 我没有能力更改数据库结构,因为它属于开源测试用例管理系统 (TestLink)。
  • 可以为此编写一些代码,但我希望可以在 MySQL 中完成。
  • 啊,是的,它使用 MySQL,所以这必须在该环境中工作。
  • 此功能曾经存在,但已被删除,因为通常情况下,当存在数以万计的测试用例和需求时,此类工作会使数据库崩溃。

    创建表数据透视 (req_id int(11),testcase_id int(11));

    /*表的数据pivot */

    插入pivot(req_id,testcase_id)值(1,1);

    插入pivot(req_id,testcase_id)值(2,2);

    插入pivot(req_id,testcase_id)值(3,3);

    插入pivot(req_id,testcase_id)值(4,1);

    插入pivot(req_id,testcase_id)值(5,2);

    插入pivot(req_id,testcase_id)值(6,3);

    插入pivot(req_id,testcase_id)值(2,1);

    插入pivot(req_id,testcase_id)值(3,2);

我想从查询中得到一个看起来像这样的表:

   1    2    3    4    5    6
1 x x x
2 x x x
3 x x

注意:行是 testcase_ids,列是“req_ids”

有人知道如何仅使用 SQL 来实现此目的吗?

最佳答案

下面的方法效率更高:

为 test_cases 创建一张表,例如

create table testCases(
id int(11) auto_increment,
testcase varchar(200),
primary key(id))

一张表满足要求

requirements(
id int(11) auto_increment,
requirements varchar(200),
primary key(id))

然后在第三个表中映射关系

 create table matchRequirementsToTests(
requirements varchar(200),
testcase varchar(200),
primary key(requirements, testcase),
foreign key (requirements) references Requirements(id),
foreign key(test case) references Test_cases(id))

关于mysql - 如何从 2 列表转换多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com