我有两个表要加入 SQL Server。
一个房子呼叫数据并有一个唯一的 id Login_ID
。此表不包含员工姓名。
另一个表没有员工的唯一 ID。
我需要做的是加入这两个表,以便我可以同时查看员工的呼叫数据和票证数据。
不幸的是,工Login_ID
单表中没有用于链接员工数据的相关列。
通话数据表示例:
Login_ID | Calls | CallTime | Date |
00000001 | 34 | 349874 | 030317 |
票务表示例:
Name | Ticket_Num | Date |
Some Emp | 5456465434 | 030317 |
所以会发生什么:每当有人更改他们的名字时,他们基本上在这个表中有一个新的 ID。这太可怕了。
我只需要大约 18 名员工的数据。
我的问题是:如何将Login_ID
与票证表相关联?
希望我说的够清楚了!
您应该使用所谓的外键来存储关联。这将确保数据之间关系的完整性,并有助于在您尝试从不同表中提取关联数据时优化查询。
FOREIGN KEY 是用于将两个表链接在一起的键。
FOREIGN KEY 是一个表中的一个字段(或字段集合),它引用另一个表中的 PRIMARY KEY。
包含外键的表称为子表,包含候选键的表称为被引用或父表。
您可以使用join
.
如果您有 1:1 的关系,您可以将Login_ID
一个字段添加到您的工单表中,然后您可以在 上加入您的表Login.Login_ID = Tickets.Login_Id
。
Alter Table Tickets
Add Login_ID int not null Constraint "FK_Tickets_LoginId" References Tickets(Login_Id)
// USAGE:
Select * from Logins Join Tickets on Logins.Login_ID=Tickets.Login_Id where Login_ID=@LoginId
如果您不能修改任一表,那么您可以创建一个新表,Logins2Tickets
其中可能包含两个字段Login_ID
和Ticket_Num
然后,您可以加入您Logins
到Logins2Tickets
上Login.Login_ID = Tickets.Login_Id
并加入Logins2Tickets
到Tickets
上Logins2Tickets.Ticket_Num = Tickets.Ticket_Num
Create Table Logins2Tickets
(
Login_ID int not null constraint "FK_Logins2Tickets_Login_ID" References Logins(Login_Id)
Ticket_Num bigint not null constraint "FK_Logins2Tickets_Ticket_Num" References Tickets(_Login_ID)
)
// USAGE:
Select *
From
Logins l Join Logins2Tickets lt
on l.Login_ID=lt.Login_ID
Join Tickets t
on lt.Ticket_Num=t.Ticket_Num
WHERE Login_ID=@LoginId
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句