大家好,我是雷工!
最近参与的一个SCADA项目,客户要求增加设备维保的功能,对设备的报修,维修,反馈过程进行记录查询,进一步提升企业的信息化能力。

该过程的实现是通过创建三个表分别记录报修-维修-反馈的过程流转信息,由不同环节的的人员分别入录相关信息。查询时通过选择报修时间段,设备名称查询对应时间段内该设备的维保情况。
为了直观查看设备报修所处的环节及维修情况,通过维修单号关联查询三个表格信息并展示。
下面简单记录三表连查的方法及简单的应用示例。

一、创建相关数据表

1、创建报修单记录表(BXD)记录报修单的信息

sql server 三表联查key重复 sql server三表查询_数据库

2、创建维修单记录表(WXD)记录维修单的信息

sql server 三表联查key重复 sql server三表查询_sqlserver_02

3、创建反馈单记录表(FKD)记录对维修结果的反馈信息

sql server 三表联查key重复 sql server三表查询_时间段_03

二、开发信息入录界面

1、报修入录弹窗

sql server 三表联查key重复 sql server三表查询_sql_04

2、维修入录界面

sql server 三表联查key重复 sql server三表查询_sql_05

3、反馈处理界面

sql server 三表联查key重复 sql server三表查询_sqlserver_06

三、数据查询语句

数据的查询涉及三表连查,此处采用的方法是左外连接(LEFT JOIN ON)。
此方法是以左表为主表,依次向右匹配,匹配到,返回结果,匹配不到,则返回NULL值填充。

SQL语句如下:

SELECT 
 BXD.设备名称,BXD.班组长,BXD.单号,BXD.报修时间,BXD.报修人,BXD.维修班,BXD.问题描述,BXD.备注,BXD.维修序列,
 WXD.值班员,WXD.班组长,WXD.报修人,WXD.接报时间,WXD.修复人,WXD.修复时间,WXD.验收人,WXD.维修人,WXD.问题描述,WXD.故障分析,
 FKD.班组长,FKD.反馈时间,FKD.反馈人,FKD.运行班,FKD.处理意见,FKD.备注
 FROM [SCADASQL].[dbo].[BXD]
 LEFT JOIN [SCADASQL].[dbo].[WXD] ON BXD.单号= WXD.单号
 LEFT JOIN [SCADASQL].[dbo].[FKD] ON WXD.单号= FKD.单号
 where BXD.设备名称 like '%清水泵%' AND BXD.报修时间 between '2023-05-18' AND '2023-05-18'
 ORDER BY 单号

四、查询结果

1、SQLServer数据库查询结果

sql server 三表联查key重复 sql server三表查询_数据库_07

2、SCADA内查询结果

sql server 三表联查key重复 sql server三表查询_sqlserver_08

结束语:

随着工业互联网的发展,SCADA系统在传统实时数据采集和监督控制的基础上,不断衍生出更多信息化,智能化应用,不仅可以对生产环节数据实时监控和综合调度,还可以较大地提升企业信息化水平和生产管理水平,促进企业快速发展。