MS Access 2010 中的列数?

Posted

技术标签:

【中文标题】MS Access 2010 中的列数?【英文标题】:Number of Columns in MS Access 2010? 【发布时间】:2012-11-07 15:02:33 【问题描述】:

我有 52 列是/否参加每周 .. 我想查询以了解其中包含“是”或“否”的列数...有人可以帮我解决这个问题吗?如果您知道任何用于访问查询的推荐站点或社区,请告诉我。谢谢。

【问题讨论】:

在我看来问题是这个数据库模式设计得很糟糕。我会将这些数据存储在不同的行中......还有53 week years那些呢? 【参考方案1】:

我认为这是一个糟糕的设计。它打破了第一范式。

我可以设想一个用户表、一个会议表和一个多对多 JOIN 表,将用户与他们参加的会议联系起来。

查询所有会议会告诉您可以参加的日期。

使用 user_meeting JOIN 表加入用户表可以告诉您给定用户参加了哪些会议。

现在您有两组:所有可能的会议和给定用户参加的日期。如果您设置不同,您将看到用户未参加的潜在日期。

【讨论】:

那么我怎样才能参加 52 周的活动......如果分别有 3 周没有参加活动,我想要......在其他专栏告诉我!?【参考方案2】:

以下是如何使用列表的粗略草图。毫无疑问还有其他更好的方法,但这只是一个开始。

间隔三周:

SELECT b.UserID, b.WeekNo, (SELECT Top 1 WeekNo 
    FROM (SELECT * FROM table2 WHERE Attended=True) a 
    WHERE a.WeekNo > b.WeekNo) AS [next]
FROM (SELECT * FROM table2 WHERE Attended=True)  AS b
WHERE (((b.UserID)=1) AND (((SELECT Top 1 WeekNo 
    FROM (SELECT * FROM table2 WHERE Attended=True) a 
    WHERE a.WeekNo > b.WeekNo))>[b].[WeekNo]+3))
ORDER BY b.WeekNo;

出席人数:

SELECT Table2.UserID, Sum(Abs([Attended])) AS Attend
FROM Table2
GROUP BY Table2.UserID;

桌子:

UserID  WeekNo  Attended
1       1       True
1       2       True
1       3       True
1       4       True
1       5       False
1       6       False
1       7       True
1       8       True
1       9       False
1       10      False
1       11      False
1       12      True
1       13      True
1       14      True

【讨论】:

请您发送带有此示例的附件文件以证明您的解决方案! 你写的数据库设计很糟糕很糟糕,我谈谈你的建议,然后放到新表中......非常感谢

以上是关于MS Access 2010 中的列数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用查询或 VBA 和 SQL 更新 MS ACCESS 中的表

更新 MS - 通过 MS-Excel 单元格访问字段

使用 C# 动态重命名 MS Access 中的列

使用 SQL 重命名 MS Access 中的列

MS Access:组合框列顺序问题

MS Access中的列过多时如何转置数据