我有一个表MapLocation,它有一个列和两个关系,这些表的字段确实需要显示为单个连接值。我认为这是一个计算列的完美案例,但不知道如何去做。
MapLocation MaoNo Section
_____________________ _____________________ _____________________
MapNoId MapNoId SectionId
SectionId MapNumber (int) Section (int)
Identifier (nvarchar)
LocationName (nvarchar)
LocationName =“MapNUmber - SectionNumber - Identifier”
例如:20 - 03 - SW4
我该怎么写?我在计算列中没有做太多工作或在SQL中连接。
编辑:
我需要一个自动更新的实际计算列,即时寻找公式。或者这更像是一个功能/触发器?它可能,我当然几乎不知道我在做什么。我的想法是,我不想再进行两次服务器调用,并将这些值连接到客户端。
答案 0 :(得分:0)
您可以使用类似的内容来获取值:
select cast(n.MapNumber as nvarchar(10)) + ' - ' -- cast the MapNumber
+ cast(s.SectionId as nvarchar(10)) + ' - ' -- cast the SectionId
+ l.Identifier
from MapLocation l
left join MaoNo n
on l.MapNoId = n.MapNoId
left join Section s
on l.SectionId = s.SectionId
然后,如果您需要执行UPDATE
:
update l
set l.LocationName = (cast(n.MapNumber as nvarchar(10)) + ' - '
+ cast(s.SectionId as nvarchar(10)) + ' - '
+ l.Identifier)
from MapLocation l
left join MaoNo n
on l.MapNoId = n.MapNoId
left join Section s
on l.SectionId = s.SectionId
编辑#1 - 您可以使用TRIGGER
:
CREATE TRIGGER trig_LocationName
ON MapLocation
AFTER INSERT
AS
Begin
update MapLocation
set LocationName = (cast(n.MapNumber as nvarchar(10)) + ' - '
+ cast(s.SectionId as nvarchar(10)) + ' - '
+ i.Identifier)
from Inserted i
left join MaoNo n
on i.MapNoId = n.MapNoId
left join Section s
on i.SectionId = s.SectionId
where MapLocation.MapNoId = i.MapNoId -- fields here to make sure you update the correct record
End