我已经建立了一个射频识别种族计时系统,一切都运行良好,但现在我需要插入或更新的tblMovement条目。
插入时必须使用tagID、movementDate、checkDate。movementDate是实际的标记读取时间。checkDate是为了我的防碰撞功能。插入时,必须将movementDate放在@Lap1 1中。
更新时,我必须找到tagID,并检查@Lap4 1、@Lap4 2、@Lap4 3、@Lap4 4或@Lap4 5是否有数据。如果@Lap3 3有数据,那么我必须插入@Lap3 4等。
定位tagID的search查询运行良好,它可以根据结果进行更新或插入。我最大的挑战是扫描每一列,看看哪一列有数据。我有源代码,但是这个窗口太多了.
发布于 2015-07-04 10:28:16
而不是有5圈时间,这将是最好的打破这是一个规范化的结构。这意味着有一个具有以下结构的tblMovementLaps表。
CREATE TABLE dbo.tblMovementLaps(
[Id] INT NOT NULL IDENTITY(1,1),
[TagId] INT NOT NULL,
[MovementDate] DATETIME NOT NULL,
[CheckDate] DATETIME NOT NULL
)在每一场比赛开始时,你都会在tblMovement中插入一个新的记录,每次记录新的一圈时,都会在tblMovementLap中插入一个新的记录。然后你就会在两个人之间加入来回顾一场比赛,包括:
SELECT *
FROM [tblMovement] TM
JOIN [tblMovementLaps] TML
ON TM.[TagId] = TML.[Id]
ORDER BY TML.[Id] ASC这样做有很大的好处--它允许你记录无限圈数的比赛,而不会破坏你的结构,或者把你的移动表扩展成越来越多的列。此外,它还允许您在移动表中保留空间,以获取每个种族真正独特的信息(标准化的基础),如赛车ID、比赛日期等。
尽管如此,如果您真的想继续支持当前的结构,可以将[CurrentLap]字段添加到TblMovement中。总是把你的膝盖时间插入到那个领域。在表上设置一个UPDATE触发器,将该值移动到基于该字段填充的@lap字段中的一个
https://stackoverflow.com/questions/31219373
复制相似问题