2013-04-09 102 views
2

首先,它应该是很容易的DB'es但它确实给我在这里痛苦,我不知道为什么,,更新柱联接列,,

我有两个表,[表1]命名Applicationforms和[命名WFInstance 表2]我需要与表2 的startedDate值,其中FormSubmitDate为空更新表1的FormSubmitDate。 我写了下面的查询

UPDATE ApplicationForm 
SET    FormSubmitDate = wfi.StartDate 
FROM   ApplicationForm app , 
         WorkFlowInstances wfi 

WHERE  app.FormSubmitDate is null and wfi.applicationID = app.ID 

当我运行查询的SQL重新生成查询到这一个,,

UPDATE ApplicationForm 
SET    FormSubmitDate = wfi.StartDate 
FROM   ApplicationForm AS app INNER JOIN 
         WorkFlowInstances AS wfi ON app.ID = wfi.ApplicationID CROSS JOIN 
         ApplicationForm 
WHERE  (app.FormSubmitDate IS NULL) 

我试图使用连接到另写statment ,,

UPDATE ApplicationForm 
SET FormSubmitDate = wfi.StartDate 
FROM ApplicationForm 
JOIN WorkFlowInstances wfi ON ApplicationForm.ID = wfi.ApplicationID 
WHERE FormSubmitDate is null 

和SQL生成相同的新语法,,

现在,当我运行代码时, [所有记录] formSubmitDate字段用第二个表的第一个值startDate填充。即使我有一个记录包含什么,我在这里缺少table1中

空值!?

+0

做我的,你的建议帮助吗? – idipous 2013-04-09 07:40:11

回答

3

我想这你想要做什么。试试吧,让我们知道。

UPDATE tabl3 
SET formsubmitdate=(SELECT startdate 
    FROM table4 
    WHERE table4.id=tabl3.id AND tabl3.formsubmitdate is null); 

另一种方式来写同样的事情将是

UPDATE tabl3 
SET formsubmitdate= startdate 
FROM table4 where tabl3.id = table4.id and formsubmitdate is null 
+0

最后,,第二查询工作,,我可以问一下你为什么从表4中,因为我们需要在表3中更新?! 我正在尝试相同的查询,但与[从表3] ,,, 我不是很好的数据库,但作为票价,我知道联接返回马赫记录是正确的?! – Moe 2013-04-09 07:58:50

+0

它是从table4开始的,这就是它工作的原因。连接返回满足条件的所有行。我写的内容与加入的概念不同。 – idipous 2013-04-09 08:57:43