2016-04-11 4 views
0

Haftungsausschluss: Ich betrachte mich selbst als Datenbank-Neuling, und ich habe gerade angefangen, Datenbankansichten selbst zu erstellen. Ich hätte wahrscheinlich ein paar Google-Suchen durchführen können, um die Antwort zu finden, aber ich wusste nicht einmal, welche Keywords verwendet werden sollen - also bitte mit mir.Mit etwas Herausforderung beim Erstellen einer Datenbankansicht konfrontiert

Betrachten Sie folgende Ansicht Skript:

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 

Gerade über Skript zu klären, was bin ich letztlich interessiert sich der Wert in der Spalte t2.value_i_need ist. Aber um das herauszufinden, muss ich zuerst einen Wert an table_1 übergeben, um einige record_id zu erhalten, die anschließend an table_2 übergeben werden, um den gewünschten Wert zu erhalten. Ich hoffe, dass ich hier einen Sinn habe.

Und das scheint natürlich nicht zu funktionieren. Was ist der richtige Weg?

+0

Bekommen Sie erhalten einen Fehler oder erhalten Sie nicht die Ergebnisse, die Sie brauchen? –

Antwort

0

Ich sehe kein Problem mit Ihrer CREATE VIEW Erklärung, außer dass Sie ein LEFT JOIN durchführen und so t2.value_i_need in NULL führen kann, wenn es keine Übereinstimmung gibt. Sie können die Verwendung COALESCE() für das wie

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 
Verwandte Themen