【发布时间】:2011-09-08 14:23:42
【问题描述】:
我正在使用 VB.net 编写一个 MYSQL 应用程序,我需要添加的一个功能是能够为我的员工每周工作添加一列。例如,我希望将第一列称为“W1”,将下一列称为“W2”,依此类推,直到“W52”。所以我的问题是如何在我的表中添加一列并将其名称添加到其当前值?如果名称中没有任何字母,这很容易,但我需要它在标题中也有“W”以避免混淆。添加我有这个的列:
ALTER TABLE manager ADD W1 MEDIUMINT;
如果可能的话,我只需要将 INTEGER 添加到 VARCHAR 数据类型的部分......也许应该涉及某种数据类型转换?
更新: 我想在我的 vb.net 表单中显示的是一个看起来像这样的数据网格视图:
为了进一步解释,最顶部的黑条是每周的日期戳,如果可能的话,我希望将其包含在 datagridview 中,但这不是必需的。在每周一栏下,员工将输入他们工作的百分比(例如:20%,或者 0.20 是一天的工作)我知道这是一种奇怪的做事方式,但它是强制性的……我想知道是不是可以自动创建这些列,而不是我必须手动输入它们。
【问题讨论】:
-
一般来说,当你遇到这样的情况时,你的数据库设计就很困难了。考虑在几周内单独使用一张桌子。
-
我没有回答你的问题,但我认为你最好创建一个新表
(userid INT, week SMALLINT, data_you_need)并在其中为每个用户/周添加数据,而不是在原始表的列中添加数据!!! -
创建新表如何解决问题?我只是尝试使用非查询语句添加列,而不必自己添加 52 列。对不起,我应该更清楚。我想要的是某种递归检查并添加语句以查看“W1”是否存在,如果不存在,则添加它,如果存在则转到下一条语句。
-
@daniel:为什么每周都需要一个专栏?我会简单地创建一个表
WorkingTime与fiEmployee作为FK 和startTime和endTime(datetime)作为字段。其余的是SQL(例如从日期时间获取星期数)。 -
数据库不是电子表格。请务必阅读规范化。
标签: mysql sql vb.net type-conversion