Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从属性值表结构中获取数据?_Sql Server_Tsql_Properties - Fatal编程技术网

Sql server 如何从属性值表结构中获取数据?

Sql server 如何从属性值表结构中获取数据?,sql-server,tsql,properties,Sql Server,Tsql,Properties,我有3张桌子,如下所示: Table 1: FormFields (FieldID, FormID, Title, DateModified, ...) Table 2: ReportItems (ReportItemID, ReportID, FormID, Title, DateModified, ...) Table 3: FormValues (ValueID, FormID, FieldID, Value, UserName, DateModified, ...) 例如,我选择了Fo

我有3张桌子,如下所示:

Table 1: FormFields (FieldID, FormID, Title, DateModified, ...)
Table 2: ReportItems (ReportItemID, ReportID, FormID, Title, DateModified, ...)
Table 3: FormValues (ValueID, FormID, FieldID, Value, UserName, DateModified, ...)
例如,我选择了FormFields的两个字段作为我的ReportItems。这两个字段是问答组合。每个问题可以有一个答案,也可以为空。 关键是结果应该是这样一个html数据列表dl,带有“dt”和“dd”,如下所示:

ReportID    FormID  FieldID Value (Question1)   UserName
ReportID    FormID  FieldID Value (Answer1)     UserName
ReportID    FormID  FieldID Value (Question2)   UserName
ReportID    FormID  FieldID Value (Answer2)     UserName
ReportID    FormID  FieldID Value (Question3)   UserName
ReportID    FormID  FieldID Value (Answer3)     UserName

Question 1
    Answer 1
Question 2

Question 3
    Answer 3
Question 4

Question 5
    Answer 5
我使用了这样的查询,但它没有返回我希望的结果:

select rf.FormID, rf.FieldID, rf.ReportItemTitle, v.Value from 
    (select r.ReportItemID, r.FormID, r.FieldID, r.Title as ReportItemTitle from 
        (select ReportItemID, ReportID, FormID, FieldID, Title 
            from ReportItems 
            where FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF' and ShowInList = 0) r
    JOIN
        (select FormID, FieldID, Title 
            from FormFields 
            where FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF') f
        ON r.FormID = f.FormID AND r.FieldID = f.FieldID) rf
LEFT JOIN
    (select FormID, FieldID, Value
        from FormValues 
        where FormID = '2D6C42E1-0C95-4E40-B792-A17E00C001BF' and UserName = '0000000000') v
ON rf.FormID = v.FormID AND rf.FieldID = v.FieldID

FormID                                  FieldID                                 ReportItem's Title  Values
2D6C42E1-0C95-4E40-B792-A17E00C001BF    E7A78AC7-10A4-4752-85D6-A17E00C22EF9    Question's Title    user's 1st question goes here...
2D6C42E1-0C95-4E40-B792-A17E00C001BF    E7A78AC7-10A4-4752-85D6-A17E00C22EF9    Question's Title    user's 2nd question goes here...
2D6C42E1-0C95-4E40-B792-A17E00C001BF    E7A78AC7-10A4-4752-85D6-A17E00C22EF9    Question's Title    user's 2nd question goes here...
2D6C42E1-0C95-4E40-B792-A17E00C001BF    8E1FAC2A-02F1-4D0D-A3E0-A184001484D8    Answer's Title  admin's answer to user's 1st question
注:

空答案是指未回答的答案为空。 结果应基于用户名和报告ID 所有ID都是GUID 问题和答案都存储在FormValues表中 也许我应该使用游标,但我真的不知道该怎么做。如果有人帮助我,我将不胜感激

多谢各位


卡多

我想我知道你的意思

ReportID    FormID  FieldID Value (Question1)   UserName
ReportID    FormID  FieldID Value (Answer1)     UserName
您希望问题和答案在同一选择列中吗?您需要按reportID、FormID、FieldID排序,并让表示逻辑跟踪当前ID,以嵌套方式显示它,就像或者您需要一个orm工具为您和用户创建对象模型一样

 <ul>
    <li>report1
        <ul>
           <li>form1
               <ul>
                  <li> question1
                      <ul>
                          <li>answer 1 by user 1</li>
                          <li>answer 2 by user 2</li>

请为这些表提供数据/结构脚本。这会让人更容易理解。@RonakVyas:嗨,我只是简化了我的问题,把它写在这里作为答案。是的,类似这样的。事实上,我想通过reportid展示一系列与特定用户相关的问题和答案。类似于用户和管理员之间的对话,对于每个用户的问题,应该有管理员的回答,如果还没有回答,就只有一个占位符。关键是,问题和答案的顺序,按日期排序,应该保持不变。想象一系列这样的块:Q1-[A1]Q2-[A2]Q3-[A3]…我发现你的第二个答案比第一个sql更让人困惑,我不明白的是为什么你总是从这里这样的临时表中选择:从select ReportItemID、ReportID、FormID中选择r.ReportItemID、r.FieldID、r.Title作为ReportItemTitle,FieldID,ReportItems中的标题,其中FormID='2D6C42E1-0C95-4E40-B792-A17E00C001BF'和ShowInList=0。在所有这些情况下,您不能选择并与原始表联接吗?