首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# SQL Insert语句-如果第一列将文本插入到下一列

C# SQL Insert语句-如果第一列将文本插入到下一列
EN

Stack Overflow用户
提问于 2015-07-04 10:07:03
回答 1查看 57关注 0票数 1

我已经建立了一个射频识别种族计时系统,一切都运行良好,但现在我需要插入或更新的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查询运行良好,它可以根据结果进行更新或插入。我最大的挑战是扫描每一列,看看哪一列有数据。我有源代码,但是这个窗口太多了.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-04 10:28:16

而不是有5圈时间,这将是最好的打破这是一个规范化的结构。这意味着有一个具有以下结构的tblMovementLaps表。

代码语言:javascript
复制
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中插入一个新的记录。然后你就会在两个人之间加入来回顾一场比赛,包括:

代码语言:javascript
复制
SELECT *
FROM [tblMovement] TM
    JOIN [tblMovementLaps] TML
    ON TM.[TagId] = TML.[Id]
ORDER BY TML.[Id] ASC

这样做有很大的好处--它允许你记录无限圈数的比赛,而不会破坏你的结构,或者把你的移动表扩展成越来越多的列。此外,它还允许您在移动表中保留空间,以获取每个种族真正独特的信息(标准化的基础),如赛车ID、比赛日期等。

尽管如此,如果您真的想继续支持当前的结构,可以将[CurrentLap]字段添加到TblMovement中。总是把你的膝盖时间插入到那个领域。在表上设置一个UPDATE触发器,将该值移动到基于该字段填充的@lap字段中的一个

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31219373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档