0

我有一个表 MapLocation,它有一个列和两个与表的关系,这些表有一个真正需要显示为单个连接值的字段。我在想这是一个计算列的完美案例,但不知道如何去做。

 MapLocation                          MaoNo                         Section   
_____________________                 _____________________         _____________________
 MapNoId                              MapNoId                       SectionId
 SectionId                            MapNumber (int)               Section (int)
 Identifier (nvarchar)
 LocationName (nvarchar)

LocationName = "MapNUMer - SectionNumber - Identifier"
例如:20 - 03 - SW4

我该怎么写?我对计算列或 SQL 中的连接做的不多。

编辑:

我需要一个自动更新的实际计算列,我正在寻找公式。或者这更像是一个函数/触发器?有可能,我当然几乎不知道自己在做什么。这个想法是我不想再做两个服务器调用并将这些值连接到客户端。

4

1 回答 1

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
于 2012-09-13T21:11:29.653 回答