将View for View移动到可管理块中

时间:2017-10-03 19:52:31

标签: sql sql-server-2012

我在SQL中有以下代码:

SELECT 
    (SELECT Form_Title 
     FROM Forms 
     WHERE Form_ID = (SELECT TOP 1 Form_ID 
                      FROM [Form_Responses] 
                      WHERE [Form_Response_ID] = [Form_Response_ID])) AS Form_Name
FROM 
    [FooDb].[dbo].[Submissions]

从本质上讲,我正在选择数据三个表格#34;远离#34;并嵌套所有这些选择。所以我从一个表中选择一个字段,然后用它在另一个表中进行选择。

我无法在视图中使用变量,因此如何使其远程可读?

编辑 - 下面的伪代码就是我上面用SQL的目的而且它有效,但我不知道如何使它干净,这就是问题所在:

//Form_Response_ID exists on Submissions
SELECT Get_Query_Result(Form_Response_ID) as Form_Name
FROM Submissions

Get_Query_Result(Form_Response_ID)() {
     return SELECT Form_Title FROM Forms WHERE Form_ID = Get_Form_Id(Form_Response_ID);
}

// Form_Responses has Form_Response_ID as well
Get_Form_Id(Form_Response_ID) {
    return SELECT TOP 1 Form_ID FROM [Form_Responses] WHERE [Form_Response_ID] = Form_Response_ID
}

1 个答案:

答案 0 :(得分:1)

您正在寻找的查询很可能就像下面的

select f.Form_Title as Form_Name
from
Forms f JOIN Form_Responses fr
on f.Form_ID=fr.Form_ID
JOIN Submissions s 
on fr.Form_Response_ID=S.Form_Response_ID