2012-11-07 220 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

你寫的數據庫的設計是非常糟糕的,可憐我說你的意見,然後把它放在新表...感謝很多 –