0

我的 tsql 服务器上有两个表

Table 1: Car {id, name}
Table 1: CarPart {id, name, CarId}

我希望我的选择结果类似于以下格式

id  -  carname   -  carpartId   -  carPartName
----------------------------------------------- 
1        car1
                       101          CarPartA
                       102          CarPartV
                       103          CarPartFD
2        car2
                       101          CarPartAA
                       102          CarPartDD
                       103          CarPartD1
3        car3
                       101          CarPartCA
                       102          CarPart1D
                       103          CarPartDB

是否可以在一次选择中显示此标识?
谢谢。

4

1 回答 1

2

这几乎从来都不是一个好主意。无论您使用什么来执行 SQL,几乎肯定更适合修改数据的呈现方式。

也就是说,在一些有用的情况下,表示层是垃圾,对于这些情况,它可能是有意义的。我会让你怀疑你正在处理其中一个案件。

select id = presentationid, carname, carpartid, carpartname
from (
select carid = id, presentationid = id, carname = name, carpartid = null, carpartname = null
from Car
union all
select carid = Car.id, presentationid = null, carname = null, carpartid = CarPart.id, carpartname = CarPart.Name
from Car
inner join CarPart
on CarPart.CarId = Car.id
) as sub
order by carid, carpartid;

http://www.sqlfiddle.com/#!6/6a57e/2

由于您需要汽车数据和汽车零件数据的单独行,因此您需要组合两个单独select位的结果,并以汽车零件数据遵循相应汽车数据的方式对它们进行排序。我通过添加carid到列表中来做到这一点,即使是汽车零件数据也会被填充。

于 2013-10-24T08:20:02.247 回答