在查询T_Device表时,有许多的关系及错误需要排查,这个表具有自关联的特点。即[Id]设备编号与其他设备的[ParentId]上级设备编号对应。
可以利用自连接进行查询,但是不好控制。最好,利用内连接。
具体的代码,如下:
select b.[Id],b.[DeviceName],b.[ParentId], a.[Id],a.[DeviceName],a.[ParentId], c.[Id],c.[DeviceName],c.[ParentId] from (select [Id],[DeviceName],[ParentId] from [PowerStation].[dbo].[T_Device] with(nolock) where [DelFlag]=0 and [PStationId] = 42 and [DeviceTypeId] = 1) a, (select [Id],[DeviceName],[ParentId] from [PowerStation].[dbo].[T_Device] with(nolock) where [DelFlag]=0 and [PStationId] = 42 and [DeviceTypeId] = 2) b, (select [Id],[DeviceName],[ParentId] from [PowerStation].[dbo].[T_Device] with(nolock) where [DelFlag]=0 and [PStationId] = 42 and [DeviceTypeId] = 6) c where a.[Id] = b.[ParentId] and c.[Id] = a.[ParentId]
上述的查询方式,可以将一些规范的设备信息查询出来,对于一些不规范的信息,就查询不出来了。有以下一些类型:
- 直流汇流箱的上级设备,是直流柜,但是直流柜的数据没有采集,所以,维护的逻辑关系,不再是实际的上下级关系,而是系统实际会用到的上下级关系,即汇流箱的上级设备为集中式逆变器;
- 集中式逆变器的上级设备,物理上是箱变,但是实际用到的是集电线,即箱变的数据没有采集,实际需要维护的逆变器上级设备是集电线;
有许多的设备上级设备的维护出现错误,所以,再上一步的查询中出现不了。需要采用其他的查询技巧。比如全外链接:
浙公网安备 33010602011771号