2017-02-04 51 views
0

我有我想在表A中创建计算列了两条表A和B表和表B获取值获取数据 这里是我的数据看起来像如何创建计算列从另一台

表A

Assembly Item  Component  
    123    40
    124     400124   

表B

Item Id   Thickness   Notes  
40.5   some text about 40
400124   0.7   some text about 400124 

我想是这样的

表A

Assembly Item  Component  Computed Col1  Computed Col1 
    123    40.5   some text about 40
    124    400124   0.7   some text about 400124 
+1

不能创建计算列从其他表引用[计算列(https://msdn.microsoft.com/en-us /library/ms191250.aspx)。你也可以使用触发器来做到这一点。 –

回答

1

您正在寻找JOIN's不计算列。

您可以创建此表值函数或视图。

Create View taba_tabB 
As 
Select A.[Assembly Item],A.Component ,B.Thickness ,B.Notes 
From TableA A 
join TableB B on A.Component = B.[Item Id] 
+0

是,但我想自动 – afri

+0

添加记录@afri是将填充新的记录也当填充相同。阅读关于视图 –

+0

在C#winform中显示来自SQL视图的数据有多困难? – afri

0

这里是触发的样品:

CREATE TABLE TableA 
(
    AssemblyItem VARCHAR(100), 
    Component VARCHAR(100), 
    col1 FLOAT, 
    col2 NVARCHAR(max) 
) 

CREATE TABLE TableB 
(
    ItemID VARCHAR(100), 
    Thickness FLOAT, 
    Notes NVARCHAR(max) 
) 

CREATE TRIGGER trg_UpdateRelatedColumn 
ON TableB 
AFTER INSERT, DELETE, UPDATE 
AS 
BEGIN 
    SET NOCOUNT ON; 
    UPDATE a SET a.col1=null,a.col2=null FROM TableA AS a INNER JOIN deleted AS d ON a.Component=d.ItemID 

    UPDATE a 
    SET a.col1 = i.Thickness, 
     a.col2 = i.Notes 
    FROM TableA AS a 
    INNER JOIN inserted AS i ON a.Component = i.ItemID 
END 
GO 

INSERT INTO dbo.TableA(AssemblyItem, Component) 
VALUES('123', '400123'), ('124', '400124') 

INSERT INTO dbo.TableB(ItemID, Thickness, Notes) 
VALUES('400123', 0.5, 'some text about 400123'), 
     ('400124', 0.7, 'some text about 400124') 


SELECT * 
FROM dbo.TableA 

UPDATE dbo.TableB 
SET Notes = Notes + 'aaa' 
WHERE ItemID = '400123' 


AssemblyItem Component col1 col2 
    123   40.5  some text about 400123aaa 
    124   400124  0.7  some text about 400124 
+3

这触发是要**玉石俱焚**在'DELETE'的情况下,由于有**可用的**'Inserted'假表在这种情况下.... –

相关问题