EmpID | NAME | CONTACT
----------------------
1 | Jim | 222-2222
2 | Jan | 555-5555
明细表:
DetailID | EmpID (foreign key) | Date | Hours_worked | Notes
-------------------------------------------------------------
10231 | 1 | 01Jan2020| 5 | Lazy Jim took off early
10233 | 2 | 02Jan2020| 8 | Jan is a hard worker
10240 | 1 | 02Jan2020| 7.5 | Finally he stays a full day
要查找jim的工作内容,请执行连接:
SELECT Employee.EmpID, Employee.Name, Details.Date, Details.Hours_worked, Details.Notes
FROM Employee
JOIN Details ON Employee.EmpID=Details.EmpID;
当然,这会给你一个标准化的结果(这通常是你想要的,所以你可以迭代):
EmpID | NAME | Date | Hours_worked | Notes
-----------------------------------------------
1 | Jim | 01Jan2020 | 5 | ......
1 | Jim | 02Jan2020 | 7 | .......
1条答案
按热度按时间5ktev3wc1#
通常您会手动定义列(无论是通过ui还是sql)。
根据所提供的信息,我认为适当的解决办法是有两张表。
你有你的“employdetails”,你会把他们的一般信息(姓名,联系信息等),关键是员工id(唯一,可以自动生成或手动,只需要是唯一的)
第二个表的“employdetails”中包含employeeid的外键,其中一个列名为date,另一个表名为details(或者在date列idea中尝试捕获的任何内容)。
然后您只需为每天添加行。然后在表之间执行联接查询,以查找员工的所有“天”。这就是所谓的规范化,以及关系数据库(如access)的使用方式。
员工表:
明细表:
要查找jim的工作内容,请执行连接:
当然,这会给你一个标准化的结果(这通常是你想要的,所以你可以迭代):
如果你想让结果非规范化,你就必须查看pivot表。
有关创建外键的详细信息,请参见