创建数据库视图时遇到一些挑战

时间:2016-04-11 22:08:08

标签: sql sql-server sql-view

免责声明:我认为自己是数据库新手,我刚开始创建数据库视图。我本可以做一些Google搜索来找到答案,但我甚至不知道要使用哪些关键字 - 所以请耐心等待。

请考虑以下视图脚本:

CREATE VIEW dbo.My_First_View
AS
    SELECT 
        mt.*,
        t1.another_id,
        t2.value_i_need
    FROM 
        my_table mt
    LEFT JOIN 
        table_1 t1 ON t1.record_id = mt.record_id
    LEFT JOIN 
        table_2 t2 ON t2.record_id = t1.another_id
GO

为了澄清上面的脚本,我最感兴趣的是t2.value_i_need列中的值。但是为了检索它,我需要首先将值传递给table_1以获得一些record_id,然后将其传递给table_2以获得所需的值。我希望我在这里有意义。

当然,这似乎不起作用。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现您的CREATE VIEW声明没有任何问题,只是您正在执行LEFT JOIN,因此t2.value_i_need可能会导致NULL如果没有匹配。您可以考虑使用COALESCE(),例如

CREATE VIEW dbo.My_First_View
AS
    SELECT mt.*,
    t1.another_id,
    COALESCE(t2.value_i_need, some_default_value)

    FROM my_table mt
    LEFT JOIN table_1 t1
    ON t1.record_id = mt.record_id
    LEFT JOIN table_2 t2
    ON t2.record_id = t1.another_id
GO