我在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
}
答案 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