Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过内部联接2个表来检索名称而不是ID_Sql_Sql Server_Database - Fatal编程技术网

Sql 通过内部联接2个表来检索名称而不是ID

Sql 通过内部联接2个表来检索名称而不是ID,sql,sql-server,database,Sql,Sql Server,Database,我有两张桌子,一张给员工,一张给车票。在ticket表上,我可以看到构建代码的人的id,以及验证构建的人的id。我可以使用employee表获得此人的全名。现在,我想得到一个特定时间段的不同票证数量,无论是生成器还是验证器都等于一个特定的人。下图显示了我的员工表的一部分: 此外,以下是我编写的代码: select distinct(t1.ticketid), t1.BuilderAnalystID, t1.VALIDAnalystID, t2.EMPFullName from Ti

我有两张桌子,一张给员工,一张给车票。在ticket表上,我可以看到构建代码的人的id,以及验证构建的人的id。我可以使用employee表获得此人的全名。现在,我想得到一个特定时间段的不同票证数量,无论是生成器还是验证器都等于一个特定的人。下图显示了我的员工表的一部分:

此外,以下是我编写的代码:

select distinct(t1.ticketid),
  t1.BuilderAnalystID,
  t1.VALIDAnalystID,
  t2.EMPFullName
from Ticket as t1
inner join employee as t2 on t1.BuilderAnalystID=t2.EmployeeID 
where  (t1.builderanalystid=7 or t1.VALIDAnalystID=7) and
StatusID <>12 and
cast(BuildCMPLTDT as date)>= '2017-09-01'
and cast(BuildCMPLTDT as date)< '2018-04-01'
选择distinct(t1.TICKTID),
t1.建筑分析,
t1.VALIDAnalystID,
t2.EMPFullName
从票号t1开始
在t1.buildernalystid=t2.EmployeeID上以t2的身份内部加入员工
其中(t1.buildernalystid=7或t1.VALIDAnalystID=7)和
状态ID 12和
演员阵容(BuildCMPLTDT截止日期)>=“2017-09-01”
和铸造(截止日期为BuildCMPLTDT)<'2018-04-01'
但是我只能看到构建器的全名,即使验证器或构建器是不同的人,我怎么能看到验证器的全名呢。

试试这个:

select distinct(t1.ticketid),
  t1.BuilderAnalystID,
  t1.VALIDAnalystID,
  t2.EMPFullName,
  t3.EMPFullName As Validator
from Ticket as t1
inner join employee as t2 on t1.BuilderAnalystID=t2.EmployeeID
inner join employee as t3 on t1.VALIDAnalystID=t3.EmployeeID  
where  (t1.builderanalystid=7 or t1.VALIDAnalystID=7) and
StatusID <>12 and
cast(BuildCMPLTDT as date)>= '2017-09-01'
and cast(BuildCMPLTDT as date)< '2018-04-01'
选择distinct(t1.TICKTID),
t1.建筑分析,
t1.VALIDAnalystID,
t2.全名,
t3.EMPFullName作为验证程序
从票号t1开始
在t1.buildernalystid=t2.EmployeeID上以t2的身份内部加入员工
内部加入员工作为t1上的t3。VALIDAnalystID=t3.EmployeeID
其中(t1.buildernalystid=7或t1.VALIDAnalystID=7)和
状态ID 12和
演员阵容(BuildCMPLTDT截止日期)>=“2017-09-01”
和铸造(截止日期为BuildCMPLTDT)<'2018-04-01'
试试这个:

select distinct(t1.ticketid),
  t1.BuilderAnalystID,
  t1.VALIDAnalystID,
  t2.EMPFullName,
  t3.EMPFullName As Validator
from Ticket as t1
inner join employee as t2 on t1.BuilderAnalystID=t2.EmployeeID
inner join employee as t3 on t1.VALIDAnalystID=t3.EmployeeID  
where  (t1.builderanalystid=7 or t1.VALIDAnalystID=7) and
StatusID <>12 and
cast(BuildCMPLTDT as date)>= '2017-09-01'
and cast(BuildCMPLTDT as date)< '2018-04-01'
选择distinct(t1.TICKTID),
t1.建筑分析,
t1.VALIDAnalystID,
t2.全名,
t3.EMPFullName作为验证程序
从票号t1开始
在t1.buildernalystid=t2.EmployeeID上以t2的身份内部加入员工
内部加入员工作为t1上的t3。VALIDAnalystID=t3.EmployeeID
其中(t1.buildernalystid=7或t1.VALIDAnalystID=7)和
状态ID 12和
演员阵容(BuildCMPLTDT截止日期)>=“2017-09-01”
和铸造(截止日期为BuildCMPLTDT)<'2018-04-01'

我们确实需要一些完整的样本数据和预期结果才能提供帮助。我们确实需要一些完整的样本数据和预期结果才能提供帮助。