2017-08-30 116 views
-1

请帮我写下面的更新查询。我正在使用SQL Server 2014.SQL更新查询通过连接3个表来获取值

要求:根据项目ID更新表C,为对应项目ID和最新记录获取对应的'Answer_weightage'值。表A'最新'='是'表示这是最新记录。基于'Link_Id'表A和B是链接的。表A和C是根据 'PROJECT_ID'

表A联:

<table> 
 
<tr> 
 
<th> 
 
Request Type | 
 
</th> 
 
<th>Project ID | </th> 
 
<th>Latest |</th> 
 
<th> \t Link_ID</th> 
 
</tr> 
 
<tr> 
 
----------------------------------------------- 
 
</tr> 
 
<tr> 
 
<td> 
 

 
a \t 
 
</td> 
 
<td>1000</td> \t <td>No</td> \t <td>1</td> 
 
</tr> 
 
<tr> 
 
<td>b</td> \t <td>1005</td> \t <td>Yes </td>  \t <td>2</td> 
 
<tr> 
 
<td>123</td> \t <td>1000</td><td>Yes </td>  \t <td>4</td></tr> 
 
<tr> 
 
<td>c \t </td><td>1005</td> \t <td>No</td> \t <td>3</td></tr> 
 
</table>

表B

<table> 
 
<tr> 
 
<th> 
 
Question</th> \t <th>Description</th> \t <th>Answer_weightage</th> \t <th>Link_ID 
 
</th> 
 

 
</tr> 
 

 
<tr><td> 
 
6 \t </td><td>Question6 \t </td><td>0</td> \t <td>2</td> 
 
</tr> 
 
<tr> 
 
<td>2</td> \t <td>Question2</td> \t <td>5</td> \t <td>4</td></tr> 
 
<tr> 
 
<td>3</td> \t <td>Question3 \t </td><td>5</td> \t <td>4</td></tr> 
 
<tr> 
 
<td>4</td> \t <td>Question4</td><td> \t 5</td> \t <td>4</td></tr> 
 
<tr> 
 
<td>5 \t </td><td>Question5 \t </td><td>2</td> \t <td>4</td></tr> 
 
<tr> 
 
<td>6</td> \t <td>Question6 \t </td><td>2 \t </td><td>4</td></tr> 
 
<tr> 
 
<td>7</td> \t <td>Question7</td> \t <td>9 \t </td><td>4</td></tr> 
 
<tr> 
 
<td>1</td> \t <td>Question1 \t </td><td>5</td> \t <td>1</td></tr> 
 
<tr> 
 
<td>2</td> \t <td>Question2 \t </td><td>9</td> \t <td>1</td></tr> 
 
<tr> 
 
<td>3 \t </td><td>Question3 \t </td><td>5</td><td> \t 1</td></tr> 
 
<tr> 
 
<td>4</td> \t <td>Question4</td> \t <td>2 \t </td><td>1</td></tr> 
 
<tr> 
 
<td>5</td> \t <td>Question5</td> \t <td>5 \t </td><td>1</td></tr> 
 
<tr> 
 
<td>6</td> \t <td>Question6</td> \t <td>5 \t </td><td>1</td></tr> 
 
<tr> 
 
<td>7</td> \t <td>Question7</td> \t <td>2</td> \t <td>1</td></tr> 
 
<tr> 
 
<td>1</td> \t <td>Question1</td> \t <td>2 \t </td><td>2</td></tr> 
 
<tr> 
 
<td>2</td> \t <td>Question2</td> \t <td>0 \t </td><td>2</td></tr> 
 
<tr> 
 
<td>3 \t </td><td>Question3</td> \t <td>9 \t </td><td>2</td></tr> 
 
<tr> 
 
<td>4</td> \t <td>Question4 \t </td><td>9</td><td> \t 2</td></tr> 
 
<tr> 
 
<td>5 \t </td><td>Question5 \t </td><td>9</td><td> \t 2</td></tr> 
 
<tr> 
 
<td>7 \t </td><td>Question7</td> \t <td>5 \t </td><td>2</td></tr> 
 
<tr> 
 
<td>1</td> \t <td>Question1</td><td> \t 2</td> \t <td>4</td></tr> 
 

 
</table>

表C:

<table> 
 
<tr> 
 
<th>Project ID</th> 
 
<th>Question1</th> 
 
<th>Question2</th> 
 
<th>Question3</th> 
 
<th>Question4</th> 
 
<th>Question5</th> 
 
<th>Question6</th> 
 
<th>Question7</th> 
 
</tr> 
 
<tr> 
 
<td>1000</td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
</tr> 
 
<tr> 
 
<td>1005</td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
<td></td> 
 
</tr> 
 
</table>

所需的结果(表C):

<table> 
 
    <tr> 
 
    <th>Project ID</th> 
 
    <th>Question1</th> 
 
    <th>Question2</th> 
 
    <th>Question3</th> 
 
    <th>Question4</th> 
 
    <th>Question5</th> 
 
    <th>Question6</th> 
 
    <th>Question7</th> 
 
    </tr> 
 
    <tr> 
 
    <td>1000</td> 
 
    <td>2</td> 
 
    <td>5</td> 
 
    <td>5</td> 
 
    <td>5</td> 
 
    <td>2</td> 
 
    <td>2</td> 
 
    <td>9</td> 
 
    </tr> 
 
    <tr> 
 
    <td>1005</td> 
 
    <td>2</td> 
 
    <td>0</td> 
 
    <td>9</td> 
 
    <td>9</td> 
 
    <td>0</td> 
 
    <td>9</td> 
 
    <td>5</td> 
 
    </tr> 
 
    </table>

+1

你有没有测试过的'UPDATE'? –

+0

@RadimBača我对编写sql查询很新颖。这就是我现在写的:更新一个 set a。[Question] = b。[Answer_weightage] where b。[Description] =“Question1”其中b。 [link_id] =(从表c选择c。[link_id],其中c。[project_id] = a。[project_id]和a。[latest] ='是' –

+1

只需将格式化表格剪切并粘贴到代码块4空格,例如点击答案编辑框工具栏中的“{}”),不要使用代码片段。请在你的回答中澄清,而不是在评论中。你尝试了什么?请“展示研究成果” 。请在[mcve]上阅读并采取行动 – philipxy

回答

0

要更新表C的question1,将值设置为等于从B中选择的Answer_weightage,其中b.Description ='Question1'和linkId =(Link_Id from A where latest ='YES'并且与C具有相同的projectId )。

Update C set C.Question1 = 
(select Answer_weightage 
    from B 
    where Description='Question1' and Link_ID = 
     (select Link_ID 
      from A 
      where A.ProjectID = C.ProjectID and Latest='Yes')) 
+0

对于代码缩进4个空格的块(整行)(单击“{}”),请勿使用反引号。 – philipxy