2014-01-05 66 views
0

我正在學習數據庫,我有兩個問題: 如何找出2010年1月有多少員工訪問了該商店?在特定日期內查找數據?

表如下:

X:Employees(PK),VisitDate, EmployeeNumber(FK) 
Y:EmployeeNumber 
SELECT * FROM `X` WHERE `VisitDate ` BETWEEN '2010-01-01' AND '2010-01-31' 

這只是顯示了誰某個月訪問了人的數據,纔有可能找出人們的總額是多少?

第二個問題是:

如何使用連接來顯示EmployeeNumber以及有多少員工參觀了2010年1月的店?

+0

1.'COUNT(*)'。 2.不清楚3.您的情況不包括整個1月31日,但只包括午夜 – zerkms

回答

1

爲了顯示1月份訪問的人數,只需要按如下所示修改SQL。

SELECT * 
FROM 
(
    SELECT EmployeeNumber, COUNT(1) AS TotalAmountOfVisitor 
    FROM X 
    WHERE VisitDate BETWEEN '2010-01-01' AND '2010-01-31 23:59:59' 
    GROUP BY EmployeeNumber 
) AS RefTable 
INNER JOIN Y ON RefTable.EmployeeNumber = Y.EmployeeNumber 

謝謝@zerkms糾正。

+1

''2010-01-31 23:59:59'' – zerkms

+0

或者您可以有MONTH(VisitDate)= 1 AND年(VisitDate)= 2010'只提取2010年1月的信息。 – ChunLin

+1

它會導致一個全表掃描(除非你有一個基於函數的索引,這在mysql中不受支持)。因此,不建議在現實生活中使用 – zerkms

0

1)SELECT COUNT(*)FROM X WHERE VisitDate BETWEEN '2010-01-01' 和 '2010-01-31'

2)你不能這樣做。