我是SQL的新手,所以请原谅我,如果我不正确地理解这一点.
我有一个名为Employees的表,其中包含以下列:
EmployeeID - This is Int Identity (1,1)
FirstName
LastName
我有一个名为Calendar的第二个表,其中包含未来50年的日历信息.列是:
FullDate
Year
Month
Week
DayofWeek
DayofMonth
DayofYear
TypeofDay - (Weekday, Weekend, Bank holiday etc)
现在我有点困惑 – 我想我需要一个第三个表(Table3)链接上面的两个表,所以我有一个表格,如:
TableId
FullDate - linked from calendar table
EmployeeID - linked from employee table
FirstName - linked from employee table
LastName - linked from employee table
Shift1Text
Shift2Text
如果我的理解是正确的,那么我可以使用如下命令:
select * from Table3 where FullDate = **Chosen Date / DateRange**
所以我最终会得到一个输出:
Table ID | FullDate | EmployeeID | FirstName | LastName | Shift1Text | Shift2Text
---------+------------+------------+-----------+----------+------------+------------
1 | 22/06/2015 | 1 | Joe | Blogs | SomeText | SomeText
2 | 22/06/2015 | 2 | Fred | Smith | SomeText | SomeText
3 | 22/06/2015 | 3 | Bob | Jones | SomeText | SomeText
4 | 23/06/2015 | 1 | Joe | Blogs | SomeText | SomeText
5 | 23/06/2015 | 2 | Fred | Smith | SomeText | SomeText
等等…
问题是,我不知道如何以这种方式链接表,或者自动使用前两个表中的日期和员工信息填充第三个表的行.
最佳答案 最好在Calender表中添加ID,这样你的架构应该是这样的
注意:在EmployeeDate表中,您不需要添加FirstName或LastName,因为您有EmployeeID,它引用Employee表,您可以轻松获取这些字段.
你的查询将是这样的.
Select * from Employee as E
Join EmployeeDate as ED
on E.EmployeeID = ED.EmployeeID
Join DateTable D
on D.Dateid = ED.Dateid
Where D.fulldate = <your full Date>
谢谢