2012-11-07 203 views
-2

我有52是/否列出席每周..我想查询以了解列的数量是否是否是否......任何人都可以帮我解决这个问题吗?如果您知道有关Access查询的任何推荐网站或社区,请告诉我。谢谢。MS Access 2010中的列数?

+3

在我看来,问题是,这个数据库架构设计很糟糕。我会将这些数据存储在不同的行中......还有[53周](http://en.wikipedia.org/wiki/ISO_week_date#Weeks_per_year)那些呢? – ppeterka

回答

1

我认为这是一个糟糕的设计。它打破了第一种正常形式。

我可以设想一个用户表,一个会议表,以及一个将用户与他们参加的会议链接起来的多对多JOIN表。

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

通过user_meeting JOIN表加入用户表可以告诉您给定用户参加的会议。

现在你有两套:所有可能的会议和给定用户参加的日期。如果您设置了差异,您会看到用户没有参加的潜在日期。

+0

所以我如何能够在52周内取得成功......并且我希望如果没有相关人员分别在3周内完成......请告诉我其他专栏! –

0

这是您如何使用列表工作的粗略草图。无疑有其他更好的方法,但这是一个开始。

三个星期的差距:

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 
+0

请用这个例子发送附件文件来证明你的解决方案! –

+0

你写的数据库的设计是非常糟糕的,可怜我说你的意见,然后把它放在新表...感谢很多 –