SQL Server:将值从一个表映射到另一个表

时间:2018-09-30 18:36:31

标签: sql sql-server

我正在研究指纹读取器,其中读取器(本身)为每个人员生成一种“键”。我将这些密钥存储在表EmpInfo_Device中的每个已知雇员中,并分为两列:

  1. DevKey(这是FP阅读器生成的密钥)
  2. Emp_id(这是另一个表EmpInfo中为其生成密钥的特定员工的外键)

(例如,设备为员工“ Jack”生成了ID为(120)的密钥(40))。有时有些人不是员工,但仍在使用该设备,因此会为他们生成密钥。问题是我想从另一个表LogData_Stage1获取所有日志条目,该表主要由几列组成:

  1. DevKey(如前所述)
  2. LogDateTime
  3. LogType

现在,我只希望LogData_Stage1中来自EmpInfo_Device的所有日志条目用于存储的员工。

我已经尝试过该查询,但是我觉得这是错误的。

Select *
From EmpInfo_Device e
Where e.DevKey in (Select lg.DevKey from LogData_Stage1 lg)

此查询返回EmpInfo_Device中的所有值-但是,LogData_Stage1中不同ID的数量恰好是86,所以我有点困惑。

在此先感谢您,如果问题过长,我们感到抱歉

1 个答案:

答案 0 :(得分:1)

如果我理解此权利,则需要所有为员工(而不是为阅读器的其他非员工用户使用的日志)创建的所有日志条目以及员工ID。为此,您可以使用INNER JOIN

SELECT ed.emp_id,
       l.logdatetime,
       l.logtype
       FROM logdata_stage1 l
            INNER JOIN empinfo_device ed
                       ON ed.devkey = l.devkey;