连接SQL表的新手

我是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>

谢谢

点赞