Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql SQL Server 2008:具有关系表排序字段的多对多表+;分组_Tsql_Sql Server 2008_Union - Fatal编程技术网

Tsql SQL Server 2008:具有关系表排序字段的多对多表+;分组

Tsql SQL Server 2008:具有关系表排序字段的多对多表+;分组,tsql,sql-server-2008,union,Tsql,Sql Server 2008,Union,为了了解我需要什么,下面是我正在使用的图表: 我需要获得一个项目的属性+它的所有关系,所有这些都基于相应的关系表“OrderNumber列列出 假设我需要“项目Z”,我想得到: 项目的BaseUrl。。。其中ID=@ID 与该项目关联的所有测试套件,按ProjectsToTestSuites.OrderNumber列出 与匹配的TestSuite关联的所有测试用例,由TestSuitesToTestCases.OrderNumber列出 与匹配的testcases关联的所有testaction

为了了解我需要什么,下面是我正在使用的图表:

我需要获得一个项目的属性+它的所有关系,所有这些都基于相应的关系表“
OrderNumber
列列出

假设我需要“项目Z”,我想得到:

  • 项目的BaseUrl。。。其中ID=@ID
  • 与该项目关联的所有测试套件,按ProjectsToTestSuites.OrderNumber列出
  • 与匹配的TestSuite关联的所有测试用例,由TestSuitesToTestCases.OrderNumber列出
  • 与匹配的testcases关联的所有testaction,由TestCasesToTestActions.OrderNumber列出
到目前为止,我所有的尝试都以混合顺序返回结果。测试用例混合在它不属于的测试套件中

我试图避免使用游标(按所需的特定顺序循环每个关系),尝试使用UNION,但也无法使其工作

我不会对游标有任何问题,但如果存在不需要使用游标的解决方案,我当然更喜欢


谢谢

如果你想要一个简单的结果,你可以从这样的东西开始(未经测试)


谢谢,这似乎是个开始。我们将看到如何相应地编辑它。
select
    p.Id,
    p.BaseUrl,
    ts.*,
    tc.*,
    ta.*,
    pts.OrderNumber as SuitesOrder,
    tstc.OrderNumber as CasesOrder,
    tcta.OrderNumber as ActionsOrder
from
    Projects p
join
    ProjectToTestSuites pts
    on pts.Projects_Id = p.Id
join
    TestSuites ts
    on ts.Id = pts.TestSuites_Id
join
    TestSuitesToTestCases tstc
    on tstc.TestSuites_Id = ts.Id
join
    TestCases tc
    on tc.Id = tstc.TestCases_Id
join
    TestCasesToTestActions tcta
    on tcta.TestCases_Id = tc.Id
join
    TestActions ta
    on ta.Id = tcta.TestActions_Id
where
    p.Id = @Id
order by
    pts.OrderNumber,
    tstc.OrderNumber,
    tcta.OrderNumber