0

テーブルMapLocationがあります。このテーブルには、1つの連結値として実際に表示する必要があるフィールドを持つ、列とテーブルとの2つの関係があります。これは計算列の完璧なケースだと思っていましたが、どうすればよいかわかりませんでした。

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

LocationName = "MapNUmber --SectionNumber --Identifier"
例:20-03-SW4

どうやって書くの?計算列やSQLでの連結についてはあまり行っていません。

編集:

数式を探しているときに、自動的に更新される実際の計算列が必要です。それとも、これは関数/トリガーのようなものですか?その可能性は、私は確かに私が何をしているのかほとんどわかりません。アイデアは、サーバー呼び出しをさらに2回実行して、これらの値をクライアント側に連結する必要がないということです。

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 に答える