我有表的GridData,FORMLIST和FORMDATA的数据库。SQL Server的嵌套查询
我需要从FORMDATA表拉了一个名为值场,但无法弄清楚如何构建查询。我可以一个接一个地运行它,它给了我结果,但需要将它包含在表输出中。
查询,当我运行它一步一步的是:
选择*的GridData其中GridName = '反不正当竞争法' - 回报:
FormId GridName Example Field
1244135 uwg 9
1244135 uwg 10
1244135 uwg 11
1244135 uwg 7
1244135 uwg 66
使用FormID field,I lookup the FormList表
Sele从FORMLIST CT *其中FormID = 1244135个 - 回报:
JobId FormName FormId
1241899 ExampleForm 1244135
然后查询SAME FORMLIST表,其中FormID =从上面的JobID ..
选择从* FORMLIST其中FormID = 1241899 - 回报:
JobId FormName FormId
1241894 ExampleForm2 1241899
AGAIN ..查询SAME FORMLIST表,其中FormID =作业ID从上方..
SELECT * FROM FORMLIST其中FormID = 1241894个 - 回报:
JobId FormName FormId
1241893 ExampleForm3 1241894
的作业ID从此结果是我需要在FormData表中引用的ID以返回我需要的值...
选择价值从FORMDATA其中FormID = 1241893和Name = '产品名称' - 回报:
Value
12345
我在这里的目标是要能够从的GridData表中返回所有的值,与“数值”字段中的相应条目FormData。
我真的很苦恼如何编写这个查询!
我试过以下,但它返回多个重复的条目。该价值字段包含多种数据类型,我只值从这个表感兴趣,其中FormData.Name = '产品名称'
SELECT \t Value,
RecordId,
\t GridData.FormId,
\t GridName,
\t ExampleField
FROM \t GridData
JOIN \t FormData
ON \t GridData.FormId = FormData.FormID
WHERE GridData.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormList.FormId FROM FormList WHERE FormList.FormId IN
(SELECT FormData.FormID FROM FormData))))
AND FormData.DataItemName = 'JobProductName'
根据你的描述,FormList的子SELECT应该选择'JobID',而不是'FormId'。另外,将AND AND子句放在带有FormData-SELECT的括号中) – TToni
听起来像你想要使用递归查询。我也不明白为什么你在查询中没有包含FormData.Name ='ProductName',除非你没有将你的解释与你的描述同步。 –
是任意深度还是深度三的递归? –