基于 SQL Server 中的字段从主表中获取值

3

我希望能够根据事务表的不同列值从主表中检索出值。

我的主表将具有用户名,名字,姓氏

我的事务表将具有ID,创建用户,更新用户

因此,我想要从SQL服务器获取查询报告,在主表中获取createruser的FirstName,lastName,并在主表中获取updateuser的FirstName,lastName。

例如: 主表

User ID First Name  Last Name
cer001  Ds  CV
cer002  vb  av

交易表

id  CreatedUser UdatedUser
2323    cer001  cer002

所以,报告应该得到以下结果:
Id  CreatedUser UpdatedUSer
2323    Ds,CV   Vb,av

它的性能也应该很好。请帮忙如何实现。


请仔细学习 SQL 中的 joins - Sandesh Gupta
3个回答

1
您正在寻找“自连接”。
select 
      t.Id, m.FirstName +','+m.LastName as  CreatedUser,
      mm.FirstName +','+mm.LastName as  UpdatdUser
from Master m
inner join Transaction  t on t.CreatedUser = m.[User ID]
inner join Master mm on mm.[User ID]= t.UpdatedUser 

0

你应该尝试从交易表左连接到主表。 使用LEFT可以处理任何NULL值

查看演示

查询将是

create table [Master] ([User ID] varchar(10), [First Name] varchar(10), [Last Name] varchar(10));
insert into [Master] values
('cer001','Ds','CV'),('cer002','vb','av')


create table [Transaction] (id  int, CreatedUser varchar(10),UpdatedUser varchar(10))
insert into [Transaction] values
(2323, 'cer001','cer002');

select 
ID=T.id,
CreatedUser= ISNULL (M1.[First Name],'')+ ','+ISNULL(M1.[Last Name],'' ),
UpdatedUser= ISNULL (M2.[First Name],'')+ ','+ISNULL(M2.[Last Name],'')

from
[Transaction] T
LEFT JOIN
[Master] M1
   ON T.CreatedUser =M1.[User ID]  
LEFT JOIN
[Master] M2
   ON T.UpdatedUser =M2.[User ID] 

0

或许你可以尝试使用以下子查询

Select
 t.id,
 (Select TOP 1 Rtrim(m.[First Name])+','+RTRIM(m.[Last Name]) from [Master] m where m.[User ID] = t.CreatedUser) as CreatedUser,
  (Select TOP 1 Rtrim(m.[First Name])+','+RTRIM(m.[Last Name]) from [Master] m where m.[User ID] = t.UpdatedUser) as UpdatedUser
from [Transaction] t

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接