gpt4 book ai didi

c# - 关于Mysql更新!

转载 作者:行者123 更新时间:2023-11-29 04:55:30 25 4
gpt4 key购买 nike

我正在用 winform、mysql、c# 做大学项目。

为此,我创建了具有这种结构的 mysql 表,..

CREATE TABLE `attendance_monthly_rpt` (
`id` int(15) NOT NULL AUTO_INCREMENT,
`student_no` varchar(50) NOT NULL,
`student_name` varchar(50) NOT NULL,
`day1` varchar(15) NOT NULL,
`day2` varchar(15) NOT NULL,
`day3` varchar(15) NOT NULL,
`day4` varchar(15) NOT NULL,
`day5` varchar(15) NOT NULL,
`day6` varchar(15) NOT NULL,
`day7` varchar(15) NOT NULL,
`day8` varchar(15) NOT NULL,
`day9` varchar(15) NOT NULL,
`day10` varchar(15) NOT NULL,
`day11` varchar(15) NOT NULL,
`day12` varchar(15) NOT NULL,
`day13` varchar(15) NOT NULL,
`day14` varchar(15) NOT NULL,
`day15` varchar(15) NOT NULL,
`day16` varchar(15) NOT NULL,
`day17` varchar(15) NOT NULL,
`day18` varchar(15) NOT NULL,
`day19` varchar(15) NOT NULL,
`day20` varchar(15) NOT NULL,
`day21` varchar(15) NOT NULL,
`day22` varchar(15) NOT NULL,
`day23` varchar(15) NOT NULL,
`day24` varchar(15) NOT NULL,
`day25` varchar(15) NOT NULL,
`day26` varchar(15) NOT NULL,
`day27` varchar(15) NOT NULL,
`day28` varchar(15) NOT NULL,
`day29` varchar(15) NOT NULL,
`day30` varchar(15) NOT NULL,
`day31` varchar(15) NOT NULL,
`tot_persent` int(15) NOT NULL,
`tot_absent` int(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

我用 P、Ab、OD 更新此表第 1 天到第 31 天的列。现在我想将 tot_absent 逻辑中的 tot_persent 更新为 Ab 之和以及 P 和 OD 之和。

例如……

IHM22557001, Jegadeeswaran, Ab, P, Ab, OD, 0, 0, OD, Ab, 0, 0, 0, Ab

tot_persent 是 3tot_absent 是 4..

提前致谢。

最佳答案

我将建议一个不同的架构;以天为基础。如果你有基于天的,即

Id, StudentNumber, Date, Status

请注意,预计算形式的更新 tot_persent 等不存在,因为它们在数据中很容易获得。

然后就可以很干净的获取数据了:

SELECT   Date, Status
FROM StudentAttendance
WHERE StudentNumber = @no
AND Date >= @start AND Date <= @end
ORDER BY Date

和聚合

SELECT   Status, COUNT(1)
FROM StudentAttendance
WHERE StudentNumber = @no
AND Date >= @start AND Date <= @end
GROUP BY Status

此外,使用基于天的记录还可以使在应用程序层中进行聚合变得微不足道,而不是尝试在数据库中进行所有操作 - 如果您拥有这些天的数据,您就不会 < em>需要 数据库来进行聚合(LINQ-to-Objects 会很好,因为你提到了 C#)。

个人我会使用基于整数的Status,但这是主观的。但是将它映射到 C# 枚举会工作得很好,即

public enum AttendanceStatus : byte {
Present= 1,
Absent = 2,
...your other values etc...
}

这大概是 tinyint 或数据库中的类似内容。大多数 ORM/micro-ORM 会自动为您映射,因此您不必在那里做任何聪明的事情。

关于c# - 关于Mysql更新!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com