gpt4 book ai didi

c# - SQL,合并两个表进行查询

转载 作者:行者123 更新时间:2023-11-30 15:16:03 25 4
gpt4 key购买 nike

基本破败。我正在尝试获取基于 TestRunId 的 TestSuiteExecutions 列表。因此,我需要根据 TestSuiteId 和 TestRunId 进行搜索,以根据执行它们的 TestRun 获取 TestSuiteExectuions 的列表。请注意,TestSuiteExecutionId 可能没有关联的 TestRunExecutionId,这仅意味着它已从搜索中排除。

我遇到的问题是主表缺少 TestRunId,因此我需要查找/连接该关联或通过多次搜索自行创建(为了提高效率我不想这样做)

类似这样的东西;

from t in testSuiteExecutionsTable
where t.testSuiteId == testSuiteId && t.testRunId == testRunId
select t).ToList();

TestSuiteExecutions 表有以下信息,

TestSuiteExecutionId  TestSuiteId  TestRunExecutionId
-------------------- ----------- ------------------
990 1 100
991 2 NULL
992 3 102
993 1 103

问题是为了完成搜索,我需要关联的 TestRunId。有一个单独的表,其中有关联的 TestRunExecutionId 和 TestRunId,如下所示

测试运行执行表

 TestRunExecutionId    TestRunId
-------------------- -----------
100 1
102 2
103 1

我一直在阅读 SQL 连接,在一个完美的世界中,我将能够创建一个包含以下列的临时表来执行我的查询,

TestSuiteExecutionId  TestSuiteId  TestRunExecutionId TestRunId
-------------------- ----------- ------------------ ---------
990 1 100 1
991 2 NULL NULL
992 3 102 2
993 1 103 1

这样我就可以在哪些 TestSuite 正在运行哪些 TestRuns 之间建立联系,并且能够获得我的 TestSuiteExecutions 集合。两个表之间的连接桥是 TestRunExecutionId,但我不确定如何使用哪种类型的连接,或者如何以 LINQ 格式写出连接

最佳答案

您可以使用存在量词表达您的查询,如下所示:

var res = dbContext.TestSuiteExecutionsTable.Where(e =>
e.TestSuiteId == testSuiteId && dbContext.TestRunExecutionsTable.Any(r =>
r.TestRunId == testRunId && r.TestRunExecutionId == e.TestRunExecutionId
)
).ToList();

这适用于 1:1 和 1:Many 关系,大致对应于下面的 SQL:

SELECT *
FROM TestSuiteExecutionsTable e
WHERE e.TestSuiteId = @testSuiteId
AND EXISTS (
SELECT *
FROM TestRunExecutionsTable r
WHERE r.TestRunId = @testRunId AND r.TestRunExecutionId = e.TestRunExecutionId
)

关于c# - SQL,合并两个表进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50706364/

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